糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > Java实现贪吃蛇大作战小游戏(完整版)

Java实现贪吃蛇大作战小游戏(完整版)

时间:2024-05-16 04:23:59

相关推荐

Java实现贪吃蛇大作战小游戏(完整版)

大家好,今天尝试用swing技术写一个贪吃蛇大作战小游戏,供大家参考。

效果展示

目录

效果展示

一、游戏界面

二、得分情况

项目介绍

项目背景

总体需求

实现过程

代码展示

主类 :Demo类

MyPanel类

①构造方法

②初始化方法

③绘制方法

④定时器执行方法

框架Ui类

项目结构

总结

效果展示

一、游戏界面

二、得分情况

项目介绍

项目背景

“贪吃蛇大作战”游戏是一个经典的游戏,它因操作简单、娱乐性强,自从计算机实现以来,深受广大电脑玩家的喜爱,本项目基于Java技术,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。

总体需求

本系统主要是完成贪吃蛇游戏的基本操作,用户可自己练习和娱乐。需要满足以下几点要求:

(1)利用方向键来改变蛇的运行方向。

(2)空格键暂停或继续游戏,并在随机的地方产生食物。

(3)吃到食物就变成新的蛇体(蛇身长度变长,游戏继续)。

实现过程

(1)绘制窗体对象。

(2)静态UI设计(包括小蛇,食物,游戏区域和标题区域)。

(3)使用键盘监听事件和定时器实现小蛇的移动。

(4)小蛇与食物碰撞的实现。

(5)定义变量存放小蛇长度,遍历数组实现小蛇身体的增加功能。

(6)退出条件:当游戏积分到达指定分数,游戏退出。

代码展示

主类 :Demo类

package Demo;/*** 1.画出窗体对象* * * @author 青00-Java**/public class Demo0 {}

MyPanel类

构造方法

package Demo;import java.awt.Color;import ponent;import java.awt.Font;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.util.Random;import javax.swing.ImageIcon;import javax.swing.JPanel;import javax.swing.Timer;//画布类public class MyPanel extends JPanel implements KeyListener,ActionListener{//继承private static final Component This = null;//键盘监听交互接口int length;int score;int[] snakeX=new int[500];//坐标int[] snakeY=new int[500];String fx;boolean ifStart=false;//定时器Timer timer =new Timer(100,this);int foodx;int foody;Random random =new Random();public MyPanel(){init();//添加监听事件this.setFocusable(true);this.addKeyListener(this);score=0;}

初始化方法

public void init(){length=3;fx="r";//初始化小蛇的位置snakeX[0]=100;snakeY[0]=150;snakeX[1]=75;snakeY[1]=150;snakeX[2]=50;snakeY[2]=150;foodx=25+25*random.nextInt(57);foody=125+25*random.nextInt(27);System.out.println(foodx);System.out.println(foody);timer.start();}

绘制方法

@Overrideprotected void paintComponent(Graphics g){//画笔对象super.paintComponent(g);//绘制顶部的标题new ImageIcon("C:/Users/Desktop/img/title2.png").paintIcon(this,g,25,11);//创建对象//绘制游戏区域g.fillRect(25, 125, 1450, 700);//绘制小蛇//蛇头new ImageIcon("C:/Users/Desktop/img/l.png").paintIcon(this, g, snakeX[0], snakeY[0]);//蛇身for(int i=1;i<length;i++){new ImageIcon("C:/Users/Desktop/img/body.png").paintIcon(This, g, snakeX[i], snakeY[i]);}//游戏的提示语if(ifStart==false){g.setColor(Color.white);g.setFont(new Font("微软雅黑",Font.BOLD,40));g.drawString("按压空格键继续游戏", 550,500);g.drawString("无尽模式", 650,400);}//画出食物的位置new ImageIcon("C:/Users/Desktop/img/body.png").paintIcon(this, g, foodx, foody);}@Override//按压public void keyPressed(KeyEvent e) {int keyCode=e.getKeyCode();if(keyCode==KeyEvent.VK_SPACE){ifStart=!ifStart;}if(ifStart==true){if(keyCode==KeyEvent.VK_LEFT&&fx!="r"){fx="l";}else if(keyCode==KeyEvent.VK_RIGHT&&fx!="l"){fx="r";}else if(keyCode==KeyEvent.VK_UP&&fx!="d"){fx="u";}else if(keyCode==KeyEvent.VK_DOWN&&fx!="u"){fx="d";}}repaint();}

定时器执行方法

@Overridepublic void actionPerformed(ActionEvent e) {//改变蛇的位置if(ifStart==true){for(int i=length-1;i>0;i--){snakeX[i]=snakeX[i-1];snakeY[i]=snakeY[i-1];}if(fx.equals("l")){snakeX[0]=snakeX[0]-25;if(snakeX[0]<25){snakeX[0]=1450;}}else if(fx.equals("r")){snakeX[0]=snakeX[0]+25;if(snakeX[0]>1450){snakeX[0]=25;}}else if(fx.equals("u")){snakeY[0]=snakeY[0]-25;if(snakeY[0]<120){snakeY[0]=800;}}else if(fx.equals("d")){snakeY[0]=snakeY[0]+25;if(snakeY[0]>800){snakeY[0]=120;}}//判断是否吃了食物if(snakeX[0]==foodx&&snakeY[0]==foody){length++;score++;if(score==100){ifStart=!ifStart;}foodx=25+25*random.nextInt(57);foody=125+25*random.nextInt(27);System.out.print("当前食物坐标("+foodx+",");System.out.print(foody+")");System.out.println("|||当前分数:"+score+" ");}repaint();}timer.start();}@Overridepublic void keyReleased(KeyEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void keyTyped(KeyEvent arg0) {// TODO Auto-generated method stub}}

框架Ui类

package Demo;import javax.swing.JFrame;public class Ui {public static void main(String[] args){JFrame frame=new JFrame("无尽版贪吃蛇");frame.setSize(1500, 900);frame.setLocationRelativeTo(null);//居中显示frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setResizable(true);frame.add(new MyPanel());frame.setVisible(true);}}

项目结构

本程序用于初学者学习,共封装三个类,分别是Demo类,MyPanel类,框架Ui类,结构简单,所有方法均在MyPanel类中实现。

总结

本游戏的设计思路类似于游戏“贪吃蛇大作战”,程序在一些功能的实现上还存在许多不足,但该项目的实现对Java新手的实战能力有很大的提升。

在使用Java编写该项目时遇到了很多问题,在解决问题时,可以对java的面向对象编程有更加深入的理解和认识。

本项目在一定程度上还有缺陷,仅用于初学者学习,欢迎各位指正。

🥰以上就是本篇博客的全部内容,如果对你有用麻烦关注点赞收藏三连走一波!

👋如有问题欢迎留言,如有错误烦请指正,期待你的评论!

👨‍💻个人主页:青00 (一起学Java)的博客_CSDN博客-一起学Java,Java领域博主

🤳我的《一起学Java》板块持续更新中,欢迎各位编程爱好者前来观看!

如果觉得《Java实现贪吃蛇大作战小游戏(完整版)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。