简单贪吃蛇java源代码
创始人
2025-01-05 22:25:21
0 次浏览
0 评论
基于JavaFX的贪吃蛇小游戏
贪吃蛇游戏是一款经典的小游戏,操作简单但富有挑战性。游戏规则是控制蛇吃食物。
姓氏等于蛇的长度减一。
JavaFX作为桌面Java开发的首选框架,旨在取代精简版并提供更现代、更高效的用户界面。
其界面是用JavaFX构建的,用于开发游戏“Meecraft”。
虽然这个GUI库没有使用Java标准,但足以测试JavaFX的强大功能。
在教程《SnakeGameFromJavaFX》中,涉及到的主要代码文件是SnakeGame.java。
代码框架包括游戏初始化、规则设置、步骤执行等。
游戏实现的逻辑分析,包括界面初始化、游戏规则设置、蛇移动、碰撞检测、燃料生成、游戏画面绘制和游戏结束处理等。
通过代码实现,详细说明了每一步的逻辑和具体实现。
实现步骤总结如下:start方法中进行界面初始化,创建Canvas、GraphicsContext等元素,添加CanvasStackPane作为根节点,最后显示场景。
游戏初始化规则包括蛇和食物位置、游戏状态等参数。
蛇的移动是通过监听按键事件来实现的,蛇移动的方向是通过按方向键来修改的。
在每个动画循环中,我计算新蛇的位置,并确定它是否发生碰撞或超出范围,然后游戏结束。
同时,蛇是否吃了面包。
遭遇检测发生在蛇移动后,检查蛇是否与自己的身体发生碰撞,以确定游戏结束。
当它们生成食物时,这样食物就不会出现在蛇的体内,并且应该使用循环或者有重叠。
游戏画面由GraphicsContext在Canvas上绘制,包括蛇、食物等元素。
当游戏结束时,会弹出一个用户对话框,用户可以点击重新开始游戏。
提供了完整的代码,用户可以参考实现贪吃蛇游戏。
关注微信公众号“小虎哥的技术博客”,获取更多Java技术文章,与社区成员一起提高编程技能。
源代码已添加到git仓库和github仓库。
求大神给一份JAVA小游戏,贪吃蛇或者俄罗斯方块源代码。myeclipse能直接打开运行的!
i*4+j]==1&&GameMap[x+j+1][y+i]==2)return0;}}return1;}publicvoidDeline(){intBlocksSum=0;for(inti=0;i<25 i++){for(intj=0;j xss=clean xss=clean for(intp=i;p>0;p--){for(intq=0;q<16 q++){GameMap[q][p]=地图游戏[q][p-1];}}Score+ ScoreBool=1;}}}BlocksSum xss=clean returntrue;elsereturnfalse;}}publicclassTetris{publicstaticvoidmain(String[]args){Gametest2=newGame();}}开始玩新的JAVA文件名为Tetris,它是之前写过,懒得布置界面了。>哪位能告诉我贪吃蛇游戏的全部代码?
//packagemain;importjava.awt.Color;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjava.awt.event.WindowAdapter;导入java.awt.event.WindowEvent;导入java.io.BufferedReader;导入java.io.FileInputStream;导入java.io.FileOutputStream;导入java.io.InputStreamReader;导入javax.swing.ImageIcon;导入javax.swing.JFrame;导入javax.swing.JLabel;导入javax.swing.JMenu;导入javax.swing.JMenuBar;导入javax.swing.JMenuItem;导入javax.swing.JOptionPane;导入javax.swing.JPanel;publicclassTanChiSheimplementsKeyListener,ActionListener{/***@paramargs*/intmax=300;//最大蛇长度FinalintJianJu=15;//设置蛇的运动网格间距(最大窗口32*28网格)bytefangXiang=4;//控制蛇运动的方向蛇,第一个右inttime=500;//蛇的移动间隔intjianTime=2;//吃减少时间intx,y;//根据网格计算出蛇的移动坐标intx2,y2;//暂时存储蛇的坐标头intjiFenQi=0;//积分器booleanisRuned=false;//只有在未运行时才能设置级别。booleanout=false;//还没有开始执行吗?booleanrun=false;//暂停执行。
StringJiBie="Intermediate";JFramef=newJFrame("SnakeV1.0");JPanelshow=newJPanel();JLabelMessage=newJLabel("级别:中级Snake长度:5次500ms得分:00");//JButtonplay=newJButton("Start");JLabelsheTou;JLabelshiWu;JLabelsheWei[]=newJLabel[max];staticintdiJi=4;//哪个下标是snake?尾部为ImageIconshang=newImageIcon("tuPian\\isSheTouUp.png");//创建上下左右4个蛇头图案ImageIconxia=newImageIcon("tuPian\\isSheTouDown.png");ImageIconzhuo=newImageIcon("tuPian\\isSheTouLeft.png");ImageIconyou=newImageIcon("tuPian\\isSheTouRight.png");JMenuBarJMB=newJMenuBar();JMenufile=newJMenu("游戏Start");JMenuItemplay=newJMenuItem("开始游戏");JMenuItempause=newJMenuItem("暂停游戏");JMenuhard=newJMenu("游戏难度");JMenuItemgao=newJMenuItem("高级");JMenuItemzhong=newJMenuItem("中级");JMenuItemdi=newJMenuItem("低级");JMenuabout=newJMenu("信息");JMenuItemGF=newJMenuItem("※高分榜");JMenuItemZZ=newJMenuItem("作者信息");JMenuItemYX=newJMenuItem("游戏信息");JMenuItemQK=newJMenuItem("清除历史记录");staticTanChiShetcs=newTanChiShe();publicstaticvoidmain(String[]args){//TanChiShetcs=newTanChiShe();tcs.f();}publicvoidf(){f.setBounds(250,100,515,530);f.setLayout(null);f.setAlwaysOnTop(true);//窗口始终保持在前面。
f.setBackground(newColor(0,0,0));f.setDefaultCloseOperation(0);f.setRessible(false);f.setVisible(true);//f.getContentPane().setBackground(Color.BLACK);f.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);//程序退出}});f.setJMenuBar(JMB);JMB.add(file);file.add(plaay);file.add(pause);JMB.add(hard);hard.add(gao);hard.add(zhong);hard.添加(di);JMB.add(关于);about.add(GF);GF.setForeground(Color.blue);about.add(ZZ);about.add(YX);about.add(QK);QK.setForeground(Color.red);f.add(show);show.setBounds(0,f.getHeight()-92,f.getWidth(),35);//show.setBackground(Color.green);//f.add(play);//play.setBounds(240,240,80,25);play.addActionListener(this);pause.addActionListener(this);gao.addActionListener(这个);zhong.addActionListener(这个);di.addActionListener(这个);GF.addActionListener(这个);ZZ.addActionListener(这个);YX.addActionListener(这个);QK.addActionListener(这个);show.add(消息);消息.setForeground(Color.blue);f.addKeyListener(this);//show.addKeyListener(this);play.addKeyListener(this);sheChuShi();}publicvoidsheChuShi(){//蛇初始化sheTou=newJLabel(you);//使用右图初始化蛇头。
f.add(sheTou);sheTou.setBounds(JianJu*0,JianJu*0,JianJu,JianJu);//System.out.println("ishere");shiWu=newJLabel("■");f.add(shiWu);shiWu.setBounds(10*JianJu,10*JianJu,JianJu,JianJu);for(inti=0;i<=diJi;i++){sheWei[i]=newJLabel("■");f.add(sheWei[i]);sheWei[i].setBounds(-1*JianJu,0*JianJu,JianJu,JianJu);}while(true){if(out==true){yunXing();break;}尝试{Thread.sleep(200);}catch(Exceptionex){ex.printStackTrace();}}}publicvoidsheJiaChang(){//蛇的长度增加。
if(diJi
}}}sheJiaChang();//System.out.println("Eatone");if(time>100){time-=jianTime;}else{}Message.setText("等级:"+JiBie+"蛇长:"+(diJi+2)+"时间:"+time+"ms得分:"+(jiFenQi+=10)+"");}for(inti=0;i<=Diji;i++){if(sheTou.getX()==sheWei[i].getX()&&sheTou.getY()==sheWei[i].getY()){gameOver();//System.out.println("吃掉它的尾巴");}}}publicvoidyunXing(){while(true){while(run){if(fangXiang==1){//上y-=1;}if(fangXiang==2){//y+=1;}if(fangXiang==3){//左x-=1;}if(fangXiang==4){//右x+=1;}x2=sheTou.getX();y2=sheTou.getY();sheTou.setLocation(x*JianJu,y*JianJu);//设置蛇头坐标格数*间隔for(inti=diJi;i>=0;i--){if(i==0){sheWei[i].setLocation(x2,y2));//System.out.println(i+""+sheTou.getX()+""+sheTou.getY());}else{sheWei[i].setLocation(sheWei[i-1].getX(),sheWei[i-1].getY());//System.out.println(i+""+sheWei[i].getX()+""+sheWei[i].getY());}}鹏娟家nCe();try{Thread.sleep(time);}catch(Exceptione){e.printStackTrace();}}Message.setText("级别:"+JiBie+"蛇长:"+(diJi+2)+"时间:"+时间+"毫秒Score:"+(jiFenQi+=10)+"");try{Thread.sleep(200);}catch(Exceptione){e.printStackTrace();}}}publicvoidgameOver(){//游戏结束时处理=JOptionPane.showConfirmDialog(f,"游戏结束!\n是否保存分数?","提示",JOptionPane.YES_NO_OPTION);if(in==JOptionPane.YES_OPTION){//System.out.println("YES");Strings=JOptionPane.showInputDialog(f,"输入名称:");try{FileInputStreamfis=newFileInputStream("高分.ini");//首先读取并添加之前要写入的数据。
InputStreamReaderisr=newInputStreamReader(fis);BufferedReaderbr=newBufferedReader(isr);Strings2,setOut="";while((s2=br.readLine())!=null){setOut=setOut+s2+"\n"}FileOutputStreamfos=new文件输出流("GaoFen.ini");//文件输出到流s=setOut+s+":"+jiFenQi+"\n";fos.write(s.getBytes());}catch(Exceptione){}}System.exit(0);}publicvoidkeyTyped(KeyEventarg0){//TODO自动创建方法存根}publicvoidkeyPressed(KeyEventarg0){//System.o.ut.println(arg0.getSource());if(arg0.getKeyCode()==KeyEvent.VK_UP){//当向上或向下按下时,方向值相应改变。
if(fangXiang!=2){fangXiang=1;//sheTou.setIcon(shang);//设置蛇的方向}//System.out.println("UP");}if(arg0.getKeyCode()==KeyEvent.VK_DOWN){if(fangXiang!=1){fangXiang=2;//sheTou.setIcon(xia);}//System.out.println("DOWN");}if(arg0.getKeyCode()==KeyEvent.VK_LEFT){//(fangXiang!=4){fangXiang=3;//sheTou.setIcon(zhuo);}//如果是System.o,则方向值也会相应改变。
ut.println("Left");}if(arg0.getKeyCode()==KeyEvent.VK_RIGHT){if(fangXiang!=3){fangXiang=4;//sheTou.setIcon(you);}//系统.out.println("RIGHT");}}publicvoidkeyReleased(KeyEventarg0){//自动执行TODO创建方法存根}publicvoidactionPerformed(ActionEventarg0){//TODO自动创建方法存根JMenuItemJI=(JMenuItem)arg0.getSource();if(JI==play){out=true;run=true;isRuned=true;gao.(错误的);species.setEnabled(false);di.setEnabled(false);}if(JI==pause){run=false;}if(isRuned==false){//仅在游戏尚未运行时设置关卡你可以。
(JI==gao){time=200;jianTime=1;JiBie="高级";Message.setText("等级:"+JiBie+"蛇长:"+(diJi+2)+"时间:"+time+"ms分数:"+jiFenQi);}if(JI==zhong){time=400;jianTime=2;JiBie="中级";Message.setText("等级:"+JiBie+"蛇长:"+(diJi+2)+"时间:"+time+"毫秒分数:"+jiFenQi);}if(JI==di){time=500;jianTime=3;JiBie="低等级";Message.setText("等级:"+JiBie+"蛇长度:"+(diJi+2)+"时间:"+time+"ms分数:"+jiFenQi);}}if(JI==GF){try{FileInputStreamfis=newFileInputStream("GaoFen.ini");InputStreamReaderisr=newInputStreamReader(fis);BufferedReaderbr=newBufferedReader(isr);字符串,setOut="";while((s=br.readLine())!=null){setOut=setOut+s+"\n";}if(setOut.equals("")){JOptionPane.showMessageDialog(f,"已保存没有记录!","高分列表",JOptionPane.INFORMATION_MESSAGE);}else{JOptionPane.showMessageDialog(f,setOut);}}catch(Exceptione){e.printStackTrace();}}if(JI==ZZ){//作者信息JOptionPane.showMessageDialog(f,"软件作者:沉知飞\n地址:四川省绵阳市\nQQ:898513806\n邮箱:[email protected]","作者简介",JOptionPane.INFORMATION_MESSAGE);}if(JI==YX){//游戏信息JOptionPane.showMessageDialog(f,"贪吃蛇游戏\n游戏版本V1.0","游戏INFORMATION",JOptionPane.INFORMATION_MESSAGE);}if(JI==QK){try{intselect=JOptionPane.showConfirmDialog(f,"您确定要清除历史记录吗?","清除历史记录",JOptionPane.YES_OPTION);if(select==JOptionPane.YES_OPTION){StringsetOut="";FileOutputStreamfos=newFileOutputStream("GaoFen.ini");//输出到文件流fos.write(setOut.getBytes());}}catch(Exceptionex){}}}}//直接里面有一张图片,但是没有上传,所以把图片去掉了,内部的ImageIcon等语法也去掉了,就可以正常运行了。
上一篇:
python中怎么创建一个空集合
下一篇:
c消除字符串前后空格
相关文章
Python编程:空格规范与字符串处理技...
2025-01-11 08:24:32Python实现比较三个数绝对值大小:从...
2024-12-24 19:20:40全面解析:Python六大核心数据类型及...
2024-12-18 03:04:52Python字符串比较原理及示例:按位A...
2024-12-16 20:24:23Python高效求解:200以内所有素数...
2024-12-14 23:31:37Python列表append方法详解:轻...
2024-12-27 19:38:12Python编程:高效求解1-100范围...
2024-12-14 23:43:35Python多行输入输出技巧:字符串与s...
2025-01-01 04:25:49Python编程:用一行代码为情人节献上...
2024-12-15 11:42:03零基础Python学习指南:从入门到精通...
2024-12-18 19:03:43最新文章
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
热门文章
1
Python中的format()方法:字...
formatformat在python中的含义2222.22E+00Format...
2
Python编程入门:全面解析Pytho...
python的基本语法基本的Python语法如下:1.变量的定义。在编程语言中,...
3
Python字符串大小写转换方法全解析
python中字母的大小写转换怎么实现?在Python中,大小写转换由内置函数处...
4
Python字典:轻松获取最小值键与计算...
python在一个字典里,返回值最小元素对应的键,救解在Python字典中,如果...
5
Python字符串去重空格:strip(...
Python去除字符串中空格(删除指定字符)的3种方法在Python编程中,处理...
6
Python数组元素数量计算技巧分享
Python输出数组有多少个元素?简介:在本文中,首席CTO笔记将向您介绍Pyt...
7
简述python中pass的作用
pass语句的作用在许多编程语言中,包括Python;PASS语句用于在代码块中...
8
Python def 关键字详解:函数定...
def是什么意思编程?戴夫是什么意思?def是Python中的函数定义关键字,用...
9
python不区分大小写的方法
Python字符串不区分大小写在Python中,字符串操作默认区分大小写。但有时...
10
Python字典操作全解析:添加、修改、...
Pythondict字典基本操作(包括添加、修改、删除键...