java----贪吃蛇经典游戏

java----贪吃蛇经典游戏

今天我刚学了用Java制作贪吃蛇游戏,对于贪吃蛇这款游戏大多数人来说都不算陌生,大多数人提起贪吃蛇都会想起一款神机——诺基亚(嗯,这款号称可以当板砖用的神机)
首先我们先来了解一下做这个项目需要什么吧

  1. windos系统

  2. Eclipe、JDK1.8
    游戏需求:

  3. 利用方向键来改变蛇的运行方向。

  4. 实现暂停或继续游戏,并在随机的地方产生食物。

  5. 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束
    游戏需要用到的技术点:

  6. 面向对象
    a. 面向对象就是将功能封装进对象,由对象实现具体的功能,例如:Java
    b. 面向过程就是强调过程,例如:C语言
    c. 类是对一类事物描述,是抽象的、概念上的定义;
    d. 对象是实际存在的该类事物的每个个体,因而也称实例(instance)。

  7. GUI编程

  8. 事件处理机制

  9. 多线程
    贪吃蛇游戏中对象有哪些?
     游戏面板 MyPanel :游戏画面的显示组件
     贪吃蛇 Snake
     食物 Food
    闲话不说,让我们来说说项目的操作吧

  10. 用eclipse创建一个叫SnakeGame的项目(Java Preject)

  11. 在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(col
Config.SPAN,row
Config.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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值