Java实现贪吃蛇大作战小游戏的代码怎么写(java,开发技术)

时间:2024-05-02 18:02:25 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

效果展示

Java实现贪吃蛇大作战小游戏的代码怎么写

效果展示

一、游戏界面

Java实现贪吃蛇大作战小游戏的代码怎么写

二、得分情况

Java实现贪吃蛇大作战小游戏的代码怎么写

项目介绍

项目背景

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

总体需求

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

(1)利用方向键来改变蛇的运行方向。
(2)空格键暂停或继续游戏,并在随机的地方产生食物。
(3)吃到食物就变成新的蛇体(蛇身长度变长,游戏继续)。

实现过程

(1)绘制窗体对象。
(2)静态UI设计(包括小蛇,食物,游戏区域和标题区域)。
(3)使用键盘监听事件和定时器实现小蛇的移动。
(4)小蛇与食物碰撞的实现。
(5)定义变量存放小蛇长度,遍历数组实现小蛇身体的增加功能。
(6)退出条件:当游戏积分到达指定分数,游戏退出。

代码展示

主类 :Demo类

packageDemo;/***1.画出窗体对象***@author青00-Java**/publicclassDemo0{}

MyPanel类 构造方法

packageDemo;importjava.awt.Color;importjava.awt.Component;importjava.awt.Font;importjava.awt.Graphics;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjava.util.Random;importjavax.swing.ImageIcon;importjavax.swing.JPanel;importjavax.swing.Timer;//画布类publicclassMyPanelextendsJPanelimplementsKeyListener,ActionListener{//继承 privatestaticfinalComponentThis=null;//键盘监听交互接口intlength;intscore;int[]snakeX=newint[500];//坐标int[]snakeY=newint[500];Stringfx;booleanifStart=false;//定时器Timertimer=newTimer(100,this);intfoodx;intfoody;Randomrandom=newRandom();publicMyPanel(){ init(); //添加监听事件 this.setFocusable(true); this.addKeyListener(this); score=0;}

初始化方法

publicvoidinit(){ 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();}

绘制方法

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

定时器执行方法

@Override publicvoidactionPerformed(ActionEvente){ //改变蛇的位置 if(ifStart==true){ for(inti=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; } }elseif(fx.equals("r")){ snakeX[0]=snakeX[0]+25; if(snakeX[0]>1450){ snakeX[0]=25; } }elseif(fx.equals("u")){ snakeY[0]=snakeY[0]-25; if(snakeY[0]<120){ snakeY[0]=800; } }elseif(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(); } @Override publicvoidkeyReleased(KeyEventarg0){ //TODOAuto-generatedmethodstub } @Override publicvoidkeyTyped(KeyEventarg0){ //TODOAuto-generatedmethodstub }}

框架Ui类

packageDemo;importjavax.swing.JFrame;publicclassUi{ publicstaticvoidmain(String[]args){ JFrameframe=newJFrame("无尽版贪吃蛇"); frame.setSize(1500,900); frame.setLocationRelativeTo(null);//居中显示 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(true); frame.add(newMyPanel()); frame.setVisible(true); }}

项目结构

Java实现贪吃蛇大作战小游戏的代码怎么写

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Java实现贪吃蛇大作战小游戏的代码怎么写的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:springboot项目中jacoco服务端怎么部署使用下一篇:

25 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18