目录
1.系统简介
1.1设计背景
首先贪吃蛇作为手机上的经典游戏,丰富了我们的童年生活,借此机会,锻炼自己的编程能力并且重温童年。我希望自己可以尝试一下,经历还原经典游戏。
1.2开发工具及环境
(1)开发工具及介绍
IntelliJ IDEA2021是一款专业的JAVA IDE编程工具,最新版本支持git、svn、github等版本控制工具,并整合了智能代码助手、代码自动提示等功能,软件的强大的静态代码分析和人体工程学设计,能够让用户的开发设计变得简单轻松。同时,它也被认为是当前Java开发效率最快的IDE工具。
(2)开发环境:window10系统、IntelliJ IDEA2021、JDK17。
2.系统分析与设计
2.1设计目的
使用Java Swing的GUI图形用户界面编程设计并编写一个贪吃蛇程序,用户通过键盘操作可以进行贪吃蛇的移动,并进行游戏。
2.2功能需求
(1)屏幕上随机出现一个“食物”,称为豆子。玩家能利用上下左右键控制“蛇”的移动,“蛇”吃到“食物”后“蛇”身体加长一节,得分增加,“蛇”碰到边界或蛇头与蛇身相撞,“蛇”死亡,游戏结束。
(2)有开始键、暂停键和停止退出的功能,设置计分器和计时器。
2.3系统功能代码设计
2.3.1包和类的说明
2.3.2简单计算器的源代码清单
public GluttonousSnake()
游戏界面布局,设置键盘监听。
public GluttonousSnake() {
//布局
JLabel label = new JLabel("当前身长:");
add(label);
label.setBounds(5, 15, 80, 20);
label.setFont(new Font("微软雅黑", Font.PLAIN, 15));
add(Score);
Score.setBounds(90, 15, 80, 20);
Score.setFont(new Font("微软雅黑", Font.PLAIN, 15));
JLabel label2 = new JLabel("所花时间:");
add(label2);
label2.setBounds(5, 45, 80, 20);
label2.setFont(new Font("微软雅黑", Font.PLAIN, 15));
add(Time);
Time.setBounds(90, 45, 80, 20);
Time.setFont(new Font("微软雅黑", Font.PLAIN, 15));
for (int i = 0; i < MAX_SIZE; i++) {
body[i] = new Grid(0, 0);
}
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
if (e.getKeyCode() == KeyEvent.VK_D) {
if (isRun && !current_direction.equals("L")) {
direction = "R";
}
}
if (e.getKeyCode() == KeyEvent.VK_A) {
if (isRun && !current_direction.equals("R")) {
direction = "L";
}
}
if (e.getKeyCode() == KeyEvent.VK_W) {
if (isRun && !current_direction.equals("D")) {
direction = "U";
}
}
if (e.getKeyCode() == KeyEvent.VK_S) {
if (isRun && !current_direction.equals("U")) {
direction = "D";
}
}
if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
direction = "R";//默认向右走
current_direction = "R";//当前方向
first_launch = false;
isRun = true;
body_length = 5;
head = new Grid(227, 100);
Score.setText("6");
hour = 0;
min = 0;
sec = 0;
for (int i = 0; i < MAX_SIZE; i++) {
body[i].x = 0;
body[i].y = 0;
}
run.start();
System.out.println("Start again");
}
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
if (!pause)//暂停
{
pause = true;
isRun = false;
} else//开始
{
pause = false;
isRun = true;
}
}
}
});
new Timer();
setFocusable(true);
}
public void paintComponent( )
初始化蛇头、蛇身、食物和起始位置,设置游戏界面。
public void paintComponent(Graphics g1) {
super.paintComponent(g1);
Graphics2D g = (Graphics2D) g1;
//画头
g.setColor(Color.BLUE);
g.fillRoundRect(head.x, head.y, 20, 20, 20, 20);
if (!first_launch) {
//初始化身体