java贪吃蛇代码加背景图_【项目实践】java开发贪食蛇小游戏【附源码】

一、实验内容1、实现贪吃蛇游戏基本功能,屏幕上随机出现一个“食物”,称为豆子,上下左右控制“蛇”的移动,吃到“豆子”以后“蛇”的身体加长一点,得分增加,“蛇”碰到边界或,蛇头与蛇身相撞,蛇死亡,游戏结束。为游戏设计初始欢迎界面,游戏界面,游戏 结束界面。

2、进行交互界面的设计,要有开始键、暂停键和停止退出的选项。对蛇吃到豆子进行分值计算,可以设置游戏速度,游戏音乐等拓展元素。

二、贪食蛇游戏逻辑架构

9e7fd2faab988e5e0ae4243fe142dbd3.png

三、贪食蛇开发流程

1、准备开发环境(1)打开eclipse。

(2)新建SnakeGame项目,在该项目下新建Snake主类和Panel类;新建一个folder:resource存放资源,在该文件resource下再新建两个folder:sound和image,把游戏所需图片文件和音频文件放进去。

01cc73e00fc5aceeafbc6cf666fa9b08.png

2、设计游戏图纸

85d61f90a94b70254a717e3a39295cac.png

3、画出白布窗口frame`JFrame frame = new JFrame();

frame.setBounds(200, 50, 800, 600);

frame.setResizable(false);// 设置窗口不可更改

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);// 使窗口可视`

4、在窗口上添加画布`frame.add(new Panel());`

5、在画布上添加标题`ImageIcon title;// 定义游戏界面开头栏图标

title.paintIcon(this, g, 5, 0);// 用画笔g画title图标`

6、在画布上添加黑色游戏框,添加游戏背景图(游戏区)`g.fillRect(5, 35, 775, 525);// 用画笔g画游戏界面黑框

g.drawImage(bj, 5, 35, this);// 添加游戏界面背景图片`

7、在游戏区放上静态的蛇`for (int i = 1; i < len; i++) {// 不能从0开始,0用来存放蛇头了

body.paintIcon(this, g, snakex[i], snakey[i]);

}`

8、初始化蛇`public void initSnake() {

len = 3;

snakex[0] = 55;//一定要注意初始坐标的选取,不能随意取,

snakey[0] = 35;

snakex[1] = 30;

snakey[1] = 35;

snakex[2] = 5;

snakey[2] = 35;

foodx = 5 + 25 * rand.nextInt(30);// 横坐标可容纳30个food调用rand方法随机生成

foody = 35 + 25 * rand.nextInt(21);// 纵坐标可容纳21个food

fx = "R";// 重新初始化蛇头方向,不然每次一重新开始又立马撞到自己然后over掉!

score = 0;

}`

9、控制蛇头的方向`if (fx == "R") {

right.paintIcon(this, g, snakex[0], snakey[0]);// 蛇头放在头节点,即第一个数组元素中

} else if (fx == "L") {

left.paintIcon(this, g, snakex[0], snakey[0]);

} else if (fx == "U") {

up.paintIcon(this, g, snakex[0], snakey[0]);

} else if (fx == "D") {

down.paintIcon(this, g, snakex[0], snakey[0]);

}`

10、放上游戏开始、游戏结束提示`// 画跳出的游戏开始提示字符

if (isStarted == false) {

g.setColor(Color.white);// 重新设置画笔字体颜色

g.setFont(new Font("arial", Font.BOLD + Font.ITALIC, 45));// 重新设置画笔字体类型,加粗,大小

g.drawString("Press Space to Your Show Time", 50, 475);// 画它,放在窗口中坐标为(75,300)的地方

g.setColor(Color.red);

begin.paintIcon(this, g, 250, 150);

}

// 画游戏结束界面

if (isFailed) {

g.setColor(Color.white);

g.setFont(new Font("arial", Font.BOLD, 40));

g.drawString("Press Space to Restart", 200, 360);

g.setColor(Color.red);

g.setFont(new Font("arial", Font.BOLD + Font.ITALIC, 73));// 同时设置粗体与斜体用加号

g.drawString("Game Over ! ", 200, 250);

fail.paintIcon(this, g, 0, 380);

}`

11、按空格键控制游戏开始

12、让蛇动起来`if (isStarted && !isFailed) {

// 递归方法,每间隔一个时钟周期,蛇移动一格,后一节身体的坐标变成前一节身体的坐标,蛇头直接向前移动一格,一直画一直画

for (int i = len - 1; i > 0; i--) {

snakex[i] = snakex[i - 1];

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值