Java基础实战01-数字华容道制作

一、数字华容道

1.素材准备:

网上搜~,我这也是网上找的(免费资源找找就行)

2.目标实现

游戏规则就不说了,都玩过~,自己知道就好

(1)窗体的绘制
  • 使用创建一个窗口类(Window)继承JFrame

  • 在Window类中要调用两个方法

    • 用于窗体的基本设置

    • 设置窗体可见

  • 在窗体的基本设置中要设置好以下内容

    • 窗体大小

    • 窗体标题

    • 窗体居中

    • 窗体关闭时退出应用程序

    • 窗体位于其他窗口之上

    • 取消窗体默认布局

window:

public class Window extends JFrame {
​public Window(){//窗体设置windowSettings();//窗体可见this.setVisible(true);}
​private void windowSettings() {//窗体大小,参数(宽,高)单位:像素this.setSize(960,565);//窗体标题this.setTitle("数字华容道");//窗体居中this.setLocationRelativeTo(null);//窗体关闭后退出程序this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//窗体位于其他窗口上this.setAlwaysOnTop(true);//取消窗体的默认布局this.setLayout(null);
​}
​
}

RunClass:

public class RunClass {public static void main(String[] args) {Window window = new Window();
​}
}

(2)窗体上组件的绘制

所有图片也是以左上角为主

window:

//构造里面添加
addComponents();
private void addComponents() {//添加标题addTitle();//添加游戏面板addGameBoard();//添加方向键addButtons();//添加背景addBackground();
}
private void addTitle() {//标题图片JLabel title = new JLabel(new ImageIcon("digital_huarong_road\\src\\images\\title.png"));//设置该组件的位置(x,y,宽,高)title.setBounds(960 - 232 - 125, 57, 232, 57);//将该组件添加进窗口this.add(title);
}
private void addGameBoard() {//游戏面板整体是个二维数组//先打乱一下数组disrupt(数组)disrupt(randomData);//记录空缺在数组中的位置recordPosition(randomData);
​//检查for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}
​//创建面板gameBoard = new JPanel();gameBoard.setBounds(100, 75, 90 * 4, 90 * 4);gameBoard.setLayout(null);for (int i = 0; i < randomData.length; i++) {for (int j = 0; j < randomData[i].length; j++) {JLabel gameBoardBody = new JLabel(new ImageIcon("digital_huarong_road\\src\\images\\" + randomData[i][j] + ".png"));gameBoardBody.setBounds(j * 90, i * 90, 90, 90);gameBoard.add(gameBoardBody);}}this.add(gameBoard);
}
private void addButtons() {String[] fileNames = {"shang", "xia", "zuo", "you", "qiuzhu", "chongzhi"};
​for (String fileName : fileNames) {if ("shang".equals(fileName)) {jButtonUp = new JButton(new ImageIcon("digital_huarong_road\\src\\images\\" + fileName + ".png"));jButtonUp.setBounds(732 - 40, 265 - 65, 57, 57);this.add(jButtonUp);}if ("xia".equals(fileName)) {jButtonDown = new JButton(new ImageIcon("digital_huarong_road\\src\\images\\" + fileName + ".png"));jButtonDown.setBounds(732 - 40, 347 - 65, 57, 57);this.add(jButtonDown);}if ("zuo".equals(fileName)) {jButtonLeft = new JButton(new ImageIcon("digital_huarong_road\\src\\images\\" + fileName + ".png"));jButtonLeft.setBounds(650 - 40, 347 - 65, 57, 57);this.add(jButtonLeft);}if ("you".equals(fileName)) {jButtonRight = new JButton(new ImageIcon("digital_huarong_road\\src\\images\\" + fileName + ".png"));jButtonRight.setBounds(813 - 40, 347 - 65, 57, 57);this.add(jButtonRight);}if ("chongzhi".equals(fileName)) {jButtonReset = new JButton(new ImageIcon("digital_huarong_road\\src\\images\\" + fileName + ".png"));jButtonReset.setBounds(786 - 40, 444 - 65, 108, 45);this.add(jButtonReset);}if ("qiuzhu".equals(fileName)) {jButtonHelp = new JButton(new ImageIcon("digital_huarong_road\\src\\images\\" + fileName + ".png"));jButtonHelp.setBounds(626 - 40, 444 - 65, 108, 45);this.add(jButtonHelp);}}
​
​
}
private void addBackground() {//标题图片JLabel background = new JLabel(new ImageIcon("digital_huarong_road\\src\\images\\background.png"));//设置该组件的位置(x,y,宽,高)background.setBounds(0, 0, 960, 565);//将该组件添加进窗口this.add(background);
}
private void disrupt(int[][] randomData) {
​Random random = new Random();for (int i = 0; i < randomData.length; i++) {for (int j = 0; j < randomData[i].length; j++) {int x = random.nextInt(randomData.length);int y = random.nextInt(randomData[i].length);
​int temp = randomData[i][j];randomData[i][j] = randomData[x][y];randomData[x][y] = temp;}}
​
​
}

效果如图:

(3)记录一下空缺图片在二维数组的位置
private void recordPosition(int[][] randomData) {
​//拓展,循环可以起名//格式为:循环名:循环体//普通break只能退出单层循环//break 循环名; 意为退出该名称的循环outer:for (int i = 0; i < randomData.length; i++) {for (int j = 0; j < randomData[i].length; j++) {if (randomData[i][j] == 16) {x16 = i;y16 = j;break outer;}}}System.out.println("x:" + x16 + "\t" + "y:" + y16);
​}

(4)给按钮添加事件()
//其他同理
private void addEventToButton() {jButtonUp.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("上");}}
}   
                      

(5)实现移动

主要解决:

  • 数据交换

  • 重绘

  • 边界问题

window:其实是不推荐一个方法写这么多代码的~

private void addEventToButton() {jButtonUp.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("上");if (x16 == 3) {return;} else {randomData[x16][y16] = randomData[x16 + 1][y16];randomData[x16 + 1][y16] = 16;x16 = x16 + 1;
​for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}
​//调用重绘方法redraw(randomData);
​System.out.println("x:" + x16 + "\t" + "y:" + y16);
​
​}
​}});
​jButtonDown.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("下");if (x16 == 0) {return;} else {randomData[x16][y16] = randomData[x16 - 1][y16];randomData[x16 - 1][y16] = 16;x16 = x16 - 1;
​for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}
​//调用重绘方法redraw(randomData);
​System.out.println("x:" + x16 + "\t" + "y:" + y16);
​
​}
​}});jButtonLeft.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("左");if (y16 == 3) {return;} else {randomData[x16][y16] = randomData[x16][y16 + 1];randomData[x16][y16 + 1] = 16;y16 = y16 + 1;
​for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}
​//调用重绘方法redraw(randomData);System.out.println("x:" + x16 + "\t" + "y:" + y16);
​}
​}});jButtonRight.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("右");if (y16 == 0) {return;} else {randomData[x16][y16] = randomData[x16][y16 - 1];randomData[x16][y16 - 1] = 16;y16 = y16 - 1;
​for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}
​//调用重绘方法redraw(randomData);System.out.println("x:" + x16 + "\t" + "y:" + y16);
​}
​}});jButtonReset.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("重置");
​//重新打乱for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}disrupt(randomData);recordPosition(randomData);redraw(randomData);//启用controlButtonEvent(true);
​}});jButtonHelp.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("求助");success();
​}});
​}

重绘方法:

private void redraw(int[][] randomData) {gameBoard.removeAll();
​for (int i = 0; i < randomData.length; i++) {for (int j = 0; j < randomData[i].length; j++) {JLabel gameBoardBody = new JLabel(new ImageIcon("digital_huarong_road\\src\\images\\" + randomData[i][j] + ".png"));gameBoardBody.setBounds(j * 90, i * 90, 90, 90);gameBoard.add(gameBoardBody);}}this.add(gameBoard);
​gameBoard.repaint();
}

(6)求助与重置的实现

求助:一键成功

  • 数组复位

  • 重绘

  • 清除对应按键的事件

private void success() {randomData = new int[][]{{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12},{13, 14, 15, 16},};for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}
​//一键完成redraw(randomData);//清除按钮事件controlButtonEvent(false);
}

重置:

  • 打乱数组

  • 重新定位

  • 重绘

  • 恢复对应按键的事件

disrupt(randomData);
recordPosition(randomData);
redraw(randomData);
//启用
controlButtonEvent(true);

redraw:

private void redraw(int[][] randomData) {//先清除所有内容gameBoard.removeAll();//重新添加for (int i = 0; i < randomData.length; i++) {for (int j = 0; j < randomData[i].length; j++) {JLabel gameBoardBody = new JLabel(new ImageIcon("digital_huarong_road\\src\\images\\" + randomData[i][j] + ".png"));gameBoardBody.setBounds(j * 90, i * 90, 90, 90);gameBoard.add(gameBoardBody);}}this.add(gameBoard);//重绘gameBoard.repaint();
}

数组复位:

randomData = new int[][]{{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12},{13, 14, 15, 16},
};

按键/钮事件控制

private void controlButtonEvent(boolean b) {jButtonUp.setEnabled(b);jButtonDown.setEnabled(b);jButtonLeft.setEnabled(b);jButtonRight.setEnabled(b);jButtonHelp.setEnabled(b);
}

(7)胜利规则
  • 二维数组比较:Arrays类中有个深度比较的静态方法deepEquals!

  • 弹窗

private void check(){//判断二维数组是否相同if (Arrays.deepEquals(randomData, DATA)){JOptionPane.showMessageDialog(this, "成功", "游戏结束", JOptionPane.PLAIN_MESSAGE);}
}

效果如图:

核心代码:

package production_stage04;
​
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.Random;
​
public class Window extends JFrame {
​private int[][] randomData = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12},{13, 14, 15, 16}};private static final int[][] DATA = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12},{13, 14, 15, 16}};
​private int x16;private int y16;/*** 定义功能按钮*/private JButton jButtonUp = null;private JButton jButtonDown = null;private JButton jButtonLeft = null;private JButton jButtonRight = null;private JButton jButtonReset = null;private JButton jButtonHelp = null;private JPanel gameBoard = null;
​
​public Window() {//窗体设置windowSettings();//窗体上添加组件addComponents();addEventToButton();
​//窗体可见this.setVisible(true);}
​private void check(){//判断二维数组是否相同if (Arrays.deepEquals(randomData, DATA)){JOptionPane.showMessageDialog(this, "成功", "游戏结束", JOptionPane.PLAIN_MESSAGE);}}
​
​
​
​private void redraw(int[][] randomData) {gameBoard.removeAll();
​for (int i = 0; i < randomData.length; i++) {for (int j = 0; j < randomData[i].length; j++) {JLabel gameBoardBody = new JLabel(new ImageIcon("digital_huarong_road\\src\\images\\" + randomData[i][j] + ".png"));gameBoardBody.setBounds(j * 90, i * 90, 90, 90);gameBoard.add(gameBoardBody);}}this.add(gameBoard);
​gameBoard.repaint();}
​private void addEventToButton() {jButtonUp.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("上");if (x16 == 3) {return;} else {randomData[x16][y16] = randomData[x16 + 1][y16];randomData[x16 + 1][y16] = 16;x16 = x16 + 1;
​for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}
​//调用重绘方法redraw(randomData);check();
​System.out.println("x:" + x16 + "\t" + "y:" + y16);
​
​}
​}});
​jButtonDown.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("下");if (x16 == 0) {return;} else {randomData[x16][y16] = randomData[x16 - 1][y16];randomData[x16 - 1][y16] = 16;x16 = x16 - 1;
​for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}
​//调用重绘方法redraw(randomData);check();System.out.println("x:" + x16 + "\t" + "y:" + y16);
​
​}
​}});jButtonLeft.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("左");if (y16 == 3) {return;} else {randomData[x16][y16] = randomData[x16][y16 + 1];randomData[x16][y16 + 1] = 16;y16 = y16 + 1;
​for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}
​//调用重绘方法redraw(randomData);check();System.out.println("x:" + x16 + "\t" + "y:" + y16);
​}
​}});jButtonRight.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("右");if (y16 == 0) {return;} else {randomData[x16][y16] = randomData[x16][y16 - 1];randomData[x16][y16 - 1] = 16;y16 = y16 - 1;
​for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}
​//调用重绘方法redraw(randomData);check();System.out.println("x:" + x16 + "\t" + "y:" + y16);
​}
​}});jButtonReset.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("重置");
​//重新打乱for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}disrupt(randomData);recordPosition(randomData);redraw(randomData);check();
​//启用controlButtonEvent(true);
​}});jButtonHelp.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("求助");success();check();}});
​}
​
​private void success() {randomData = new int[][]{{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12},{13, 14, 15, 16},};
​for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}
​//一键完成redraw(randomData);//清除按钮事件controlButtonEvent(false);}
​private void controlButtonEvent(boolean b) {jButtonUp.setEnabled(b);jButtonDown.setEnabled(b);jButtonLeft.setEnabled(b);jButtonRight.setEnabled(b);jButtonHelp.setEnabled(b);}
​
​private void recordPosition(int[][] randomData) {
​//拓展,循环可以起名//格式为:循环名:循环体//普通break只能退出单层循环//break 循环名; 意为退出该名称的循环outer:for (int i = 0; i < randomData.length; i++) {for (int j = 0; j < randomData[i].length; j++) {if (randomData[i][j] == 16) {x16 = i;y16 = j;break outer;}}}System.out.println("x:" + x16 + "\t" + "y:" + y16);
​}
​private void addComponents() {//添加标题addTitle();//添加游戏面板addGameBoard();//添加方向键addButtons();//添加背景addBackground();}
​private void addBackground() {//标题图片JLabel background = new JLabel(new ImageIcon("digital_huarong_road\\src\\images\\background.png"));//设置该组件的位置(x,y,宽,高)background.setBounds(0, 0, 960, 565);//将该组件添加进窗口this.add(background);}
​private void addButtons() {String[] fileNames = {"shang", "xia", "zuo", "you", "qiuzhu", "chongzhi"};
​for (String fileName : fileNames) {if ("shang".equals(fileName)) {jButtonUp = new JButton(new ImageIcon("digital_huarong_road\\src\\images\\" + fileName + ".png"));jButtonUp.setBounds(732 - 40, 265 - 65, 57, 57);this.add(jButtonUp);}if ("xia".equals(fileName)) {jButtonDown = new JButton(new ImageIcon("digital_huarong_road\\src\\images\\" + fileName + ".png"));jButtonDown.setBounds(732 - 40, 347 - 65, 57, 57);this.add(jButtonDown);}if ("zuo".equals(fileName)) {jButtonLeft = new JButton(new ImageIcon("digital_huarong_road\\src\\images\\" + fileName + ".png"));jButtonLeft.setBounds(650 - 40, 347 - 65, 57, 57);this.add(jButtonLeft);}if ("you".equals(fileName)) {jButtonRight = new JButton(new ImageIcon("digital_huarong_road\\src\\images\\" + fileName + ".png"));jButtonRight.setBounds(813 - 40, 347 - 65, 57, 57);this.add(jButtonRight);}if ("chongzhi".equals(fileName)) {jButtonReset = new JButton(new ImageIcon("digital_huarong_road\\src\\images\\" + fileName + ".png"));jButtonReset.setBounds(786 - 40, 444 - 65, 108, 45);this.add(jButtonReset);}if ("qiuzhu".equals(fileName)) {jButtonHelp = new JButton(new ImageIcon("digital_huarong_road\\src\\images\\" + fileName + ".png"));jButtonHelp.setBounds(626 - 40, 444 - 65, 108, 45);this.add(jButtonHelp);}}
​
​}
​private void disrupt(int[][] randomData) {
​Random random = new Random();for (int i = 0; i < randomData.length; i++) {for (int j = 0; j < randomData[i].length; j++) {int x = random.nextInt(randomData.length);int y = random.nextInt(randomData[i].length);
​int temp = randomData[i][j];randomData[i][j] = randomData[x][y];randomData[x][y] = temp;}}
​
​}
​private void addGameBoard() {//游戏面板整体是个二维数组//先打乱一下数组disrupt(数组)disrupt(randomData);//记录空缺在数组中的位置recordPosition(randomData);
​//检查for (int i = 0; i < randomData.length; i++) {System.out.println(Arrays.toString(randomData[i]));}
​//创建面板gameBoard = new JPanel();gameBoard.setBounds(100, 75, 90 * 4, 90 * 4);gameBoard.setLayout(null);for (int i = 0; i < randomData.length; i++) {for (int j = 0; j < randomData[i].length; j++) {JLabel gameBoardBody = new JLabel(new ImageIcon("digital_huarong_road\\src\\images\\" + randomData[i][j] + ".png"));gameBoardBody.setBounds(j * 90, i * 90, 90, 90);gameBoard.add(gameBoardBody);}}this.add(gameBoard);}
​private void addTitle() {//标题图片JLabel title = new JLabel(new ImageIcon("digital_huarong_road\\src\\images\\title.png"));//设置该组件的位置(x,y,宽,高)title.setBounds(960 - 232 - 125, 57, 232, 57);//将该组件添加进窗口this.add(title);}
​private void windowSettings() {//窗体大小,参数(宽,高)单位:像素this.setSize(960, 565);//窗体标题this.setTitle("数字华容道");//窗体居中this.setLocationRelativeTo(null);//窗体关闭后退出程序this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//窗体位于其他窗口上this.setAlwaysOnTop(true);//取消窗体的默认布局this.setLayout(null);
​}
​
}
(8)后期优化/拓展

自己看着来,不写了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/433955.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全热门岗位大盘点

网络安全已成为当今社会不可或缺的重要领域&#xff0c;国家和企业越来越重视网络安全&#xff0c;众多厂商也纷纷加大网络安全岗位的招聘力度。如果你对网络安全感兴趣&#xff0c;不妨了解一下这些热门岗位&#xff01; &#x1f3af;首席信息官&#xff08;CISO&#xff09;…

极限【高数笔记】

【分类】分为了两大类&#xff0c;一个是数列的极限&#xff0c;一个是函数的极限 【数列的极限】 1.定义&#xff1a; 简单来讲&#xff0c;就是&#xff0c;当n无限趋近于无穷时&#xff0c;数列{an}无限趋近一个常数A&#xff0c;此时&#xff0c;常数A就是它们此时情况下的…

最新技术实战 | 无视杀软使用远控工具进行横向移动Tips

最新技术实战 | 无视杀软使用远控工具进行横向移动Tips。 杀软是什么意思&#xff1f;杀软是杀毒软件的简称&#xff0c;取的杀毒首字与软件首字组合而成&#xff0c;将杀毒软件简要的称之为杀软&#xff0c;所以&#xff0c;杀软的意思就是杀毒软件&#xff0c;专注于信息领域…

taskflow 源码阅读笔记-1

之前写了一篇介绍Taskflow的短文&#xff1a;传送门 Taskflow做那种有前后依赖关系的任务管理还是不错的&#xff0c;而且他的源码里运用了大量C17的写法&#xff0c;觉得还是非常值得学习的&#xff0c;因此决定看一下他的源码&#xff0c;这里顺便写了一篇代码学习笔记。 概…

【C++中的STL】函数对象

函数对象 函数对象概念谓词概念 内建函数对象算术仿函数关系仿函数逻辑仿函数&#xff08;基本用不到&#xff09; 函数对象概念 重载函数调用操作符的类&#xff0c;其对象常称为函数对象&#xff0c;函数对象使用重载的()时。行为类似函数调用&#xff0c;也叫仿函数。 函数…

java/node代码 破解“滑动验证码”的移动距离

1.直接上代码结论 import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL;p…

svg 属性详解:填充与边框

svg 属性详解&#xff1a;填充与边框 1 颜色和透明度2 填充规则 fill-rule3 边框样式3.1 stroke-width3.2 stroke-linecap3.3 stroke-linejoin3.4 stroke-dasharray 1 颜色和透明度 图像都有颜色&#xff0c;svg 中可以使用属性 fill 和 stroke 来修改图形的颜色。fill 属性设置…

【RSA加密算法进行数字签名并验签--C++】

RSA加密算法进行数字签名并验签--C 前言RSA加密算法什么是RSA加密算法公钥加密私钥解密or私钥加密公钥解密&#xff1f;公钥加密&#xff0c;私钥解密&#xff08;常见用法&#xff09;&#xff1a;私钥加密&#xff0c;公钥解密&#xff08;较少用法&#xff0c;本次使用&…

自动驾驶的决策层逻辑

作者 / 阿宝 编辑 / 阿宝 出品 / 阿宝1990 自动驾驶意味着决策责任方的转移 我国2020至2025年将会是向高级自动驾驶跨越的关键5年。自动驾驶等级提高意味着对驾驶员参与度的需求降低&#xff0c;以L3级别为界&#xff0c;低级别自动驾驶环境监测主体和决策责任方仍保留于驾驶…

两个近期的计算机领域国际学术会议(软件工程、计算机安全):欢迎投稿

近期&#xff0c;受邀担任两个国际学术会议的Special session共同主席及程序委员会成员&#xff08;TPC member&#xff09;&#xff0c;欢迎广大学界同行踊跃投稿&#xff0c;分享最新研究成果。期待这个夏天能够在夏威夷檀香山或者加利福尼亚圣荷西与各位学者深入交流。 SERA…

专业120+总分400+海南大学838信号与系统考研高分经验海大电子信息与通信

今年专业838信号与系统120&#xff0c;总分400&#xff0c;顺利上岸海南大学&#xff0c;这一年的复习起起伏伏&#xff0c;但是最后还是坚持下来的&#xff0c;吃过的苦都是值得&#xff0c;总结一下自己的复习经历&#xff0c;希望对大家复习有帮助。首先我想先强调一下专业课…

Github 2024-01-27 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-01-27统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目3Jupyter Notebook项目2非开发语言项目2JavaScript项目1Go项目1Rust项目1Shell项目1 Papers We Lo…