java----贪吃蛇经典游戏
今天我刚学了用Java制作贪吃蛇游戏,对于贪吃蛇这款游戏大多数人来说都不算陌生,大多数人提起贪吃蛇都会想起一款神机——诺基亚(嗯,这款号称可以当板砖用的神机)
首先我们先来了解一下做这个项目需要什么吧
-
windos系统
-
Eclipe、JDK1.8
游戏需求: -
利用方向键来改变蛇的运行方向。
-
实现暂停或继续游戏,并在随机的地方产生食物。
-
吃到食物就变成新的蛇体,碰到壁或自身则游戏结束
游戏需要用到的技术点: -
面向对象
a. 面向对象就是将功能封装进对象,由对象实现具体的功能,例如:Java
b. 面向过程就是强调过程,例如:C语言
c. 类是对一类事物描述,是抽象的、概念上的定义;
d. 对象是实际存在的该类事物的每个个体,因而也称实例(instance)。 -
GUI编程
-
事件处理机制
-
多线程
贪吃蛇游戏中对象有哪些?
游戏面板 MyPanel :游戏画面的显示组件
贪吃蛇 Snake
食物 Food
闲话不说,让我们来说说项目的操作吧 -
用eclipse创建一个叫SnakeGame的项目(Java Preject)
-
在SnakeGame的项目里新建
MyFrame类
package com.game.snake;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JFrame;
// JFrame图形化界面设计——容器
public class MyFrame extends JFrame {
MyPanel myPanel = new MyPanel();
Button button = new Button(myPanel);
public MyFrame() {
// 设置窗体标题
this.setTitle(“我的贪吃蛇”);
//设置窗体图标
Toolkit tool=this.getToolkit(); //得到一个Toolkit对象
Image myimage=tool.getImage(“10.jpg”); //由tool获取图像
this.setIconImage(myimage);
// 设置窗体初始位置及大小
this.setBounds(300, 50, 706, 500);
// 设置当关闭窗口的时候,保证JVM退出
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置布局管理器为null 清空布局
this.setLayout(null);
// 设置此窗体是否可由用户调整大小
this.setResizable(false);
// 添加控件
this.add(myPanel);
// 设置键盘监听焦点
myPanel.setFocusable(true);
myPanel.requestFocus();
// 添加按钮
this.add(button);
// 显示
this.setVisible(true);
} public static void main(String[] args) {
new MyFrame();
}}
Config类
package com.game.snake;
//常量配置
public class Config {
public static final int ROWS = 22;//行
public static final int COLS = 35;//列
public static final int SPAN = 20;//间隔
}
Button类
package com.game.snake;
import javax.swing.JButton;
import javax.swing.JPanel;
//按钮
public class Button extends JPanel{
MyPanel myPanel;
public Button(MyPanel myPanel) {
this.myPanel = myPanel;
this.setBounds(0, 440, 706, 60);
JButton pause = new JButton(“暂停游戏”);
JButton continu = new JButton(“继续游戏”);
JButton restart = new JButton(“重新开始”);
this.add(pause);
this.add(continu);
this.add(restart);
}}
Food类
package com.game.snake;
import java.awt.Color;
import java.awt.Graphics;
//食物类
public class Food {
private int row=(int) (Math.random()22);//所在的行
private int col=(int) (Math.random()35);//所在的列
//绘制食物自身
public void draw(Graphics g){
//设置颜色
g.setColor(Color.RED);
//填充方格
g.fillRect(colConfig.SPAN,rowConfig.SPAN, Config.SPAN,Config.SPAN);
}}
MyPanel类
package com.game.snake;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class MyPanel extends JPanel {
//创建食物对象
Food food=new Food();
public MyPanel() {
// 设置容器坐标及大小
this.setBounds(0, 0, 700, 440);
// 设置容器背景色
this.setBackground(Color.BLUE);
}// 绘制容器
@Override
public void paint(Graphics g) {
super.paint(g);
// 设置绘制的颜色
g.setColor(Color.GRAY);
// 绘制横线
for (int i = 0; i < Config.ROWS; i++) {
// 使用当前颜色在点 (x1, y1) 和 (x2, y2) 之间画一条线
g.drawLine(0, Config.SPAN * i, Config.COLS * Config.SPAN, Config.SPAN * i);
}
// 绘制竖线
for (int i = 0; i < Config.COLS; i++) {
g.drawLine(Config.SPAN * i, 0 , Config.SPAN * i , Config.ROWS * Config.SPAN);
}
//绘制食物–》调用食物对象的draw方法
food.draw(g);
}
}
效果图是这样的:
注意:有些人的电脑可能会因为分辨率的问题会有些地方显示不出来,没关系,我们可以在MyFrame类里找到
然后更改
当然了既然说是游戏了当然得有图标了,关于图标的代码也在MyFrame类里,具体代码为:
这会儿估计就会有人问图片怎么放进项目里了吧,图片放进项目里很简单,就是将你硬盘里的图片改好名字直接复制到SnakeGame的项目的根目录下,如下图:
未完待续,我会继续努力的,望给位路过的大佬留一手JAVA学习资料,让小白的路能走的更远,向大佬们看齐。_o~ 努力!Y(_)Y