贪吃蛇游戏代码.docx
- 文档编号:9395931
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:20
- 大小:17.34KB
贪吃蛇游戏代码.docx
《贪吃蛇游戏代码.docx》由会员分享,可在线阅读,更多相关《贪吃蛇游戏代码.docx(20页珍藏版)》请在冰豆网上搜索。
贪吃蛇游戏代码
作者:
冷月
//主类
packagecom.test;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.io.*;
importjava.util.ArrayList;
publicclassWormextendsJFrameimplementsActionListener{
JMenuBarjmb;
JMenujm1;
JMenuItemjmi1,jmi2,jmi3,jmi4,jmi5,jmi6;
Wormpanelwp;
JPaneljp;
publicstaticvoidmain(Stringargs[])
{
Wormw=newWorm();
}
publicWorm()
{jmb=newJMenuBar();
jm1=newJMenu("菜单");
jmi6=newJMenuItem("新游戏");
jmi6.addActionListener(this);
jmi1=newJMenuItem("继续");
jmi1.addActionListener(this);
jmi2=newJMenuItem("暂停");
jmi2.addActionListener(this);
jmi3=newJMenuItem("存盘退出");
jmi3.addActionListener(this);
jmi5=newJMenuItem("接着上一次玩");
jmi5.addActionListener(this);
jmi4=newJMenuItem("退出");
jmi4.addActionListener(this);
jp=newJPanel()
{
publicvoidpaint(Graphicsg){
g.setFont(newFont("宋体",Font.BOLD,40));
g.drawString("play",250,200);
}
};
jm1.add(jmi6);
jm1.add(jmi1);
jm1.add(jmi2);
jm1.add(jmi3);
jm1.add(jmi5);
jm1.add(jmi4);
jmb.add(jm1);
this.setJMenuBar(jmb);
this.add(jp);
this.setSize(650,500);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jmi6)
{System.out.println("ok");
wp=newWormpanel();
this.addKeyListener(wp);
this.add(wp);
this.setVisible(true);
}
if(e.getSource()==jmi4)
{
System.exit(0);
}
if(e.getSource()==jmi2)
{
this.wp.setSpeed(0);
}
if(e.getSource()==jmi1)
{
this.wp.setSpeed
(1);
}
if(e.getSource()==jmi3)
{
ArrayList
FileWriterfw=null;
BufferedWriterbw=null;
try{
fw=newFileWriter("D:
/Recording.txt");
bw=newBufferedWriter(fw);
for(inti=0;i { Wormpointwm=al.get(i); if(i==0) { intdire=wm.getDirestion(); bw.write(dire+"\r\n"); } intx=wm.getX(); inty=wm.getY(); bw.write(x+""+y+"\r\n"); } }catch(IOExceptionargs){ args.printStackTrace(); }finally{ try{ bw.flush(); bw.close(); fw.close(); System.exit(0); }catch(IOExceptionargs){ args.printStackTrace(); } } } if(e.getSource()==jmi5) {wp=newWormpanel(); this.addKeyListener(wp); this.add(wp); this.setVisible(true); ArrayList FileReaderfr=null; BufferedReaderbr=null; try{ fr=newFileReader("D: /Recording.txt"); br=newBufferedReader(fr); Stringst; st=br.readLine(); Wormpointhead=newWormpoint(); head.setDirestion(Integer.parseInt(st)); st=br.readLine(); Stringshead[]=st.split(""); head.setX(Integer.parseInt(shead[0])); head.setY(Integer.parseInt(shead[1])); al.add(head); while((st=br.readLine())! =null) { Wormpointwm=newWormpoint(); Stringstr[]=st.split(""); wm.setX(Integer.parseInt(str[0])); wm.setY(Integer.parseInt(str[1])); al.add(wm); } this.wp.vp=al; }catch(IOExceptionargs){ args.printStackTrace(); }finally{ try{ br.close(); fr.close(); }catch(IOExceptionargs){ args.printStackTrace(); } } } } } //面板类进行界面操作 packagecom.test; importjava.awt.*; importjava.awt.List; importjava.awt.event.KeyEvent; importjava.awt.event.KeyListener; importjava.util.*; importjava.util.Timer; importjavax.swing.*; publicclassWormpanelextendsJPanelimplementsKeyListener{ ArrayList Wormpointpoint; Wormpointwp; Stringreco; intspeed; booleanismove=true; Recorderrecor; publicintgetSpeed(){ returnspeed; } publicvoidsetSpeed(intspeed){ this.speed=speed; } publicWormpanel() {speed=1; recor=newRecorder(); recor.filereader(); reco=recor.recorder; point=newWormpoint(); point.setWidth(10); point.setX((int)(Math.random()*450)); point.setY((int)(Math.random()*380)); for(inti=0;i { wp=newWormpoint(); wp.setX(20); wp.setY(20-wp.getWidth()); vp.add(wp); } Timert=newTimer(); t.schedule(newMytask(),0,100); } publicvoidtouch() {booleanb=false; Wormpointw=vp.get(0); switch(w.getDirestion()) {case1: if((w.getX() { if(w.getY() {System.out.print("touch"); ismove=false; point=newWormpoint(); point.setWidth(10); point.setX((int)(Math.random()*450)); point.setY((int)(Math.random()*380)); Wormpoint.length++; recor.cadd(); } } if(recor.getcount()*10>Integer.parseInt(reco)) { recor.filewriter(); } break; case2: if((w.getX() { if(w.getY()+w.getWidth() { ismove=false; point=newWormpoint(); point.setWidth(10); point.setX((int)(Math.random()*450)); point.setY((int)(Math.random()*380)); Wormpoint.length++; recor.cadd(); } } if(recor.getcount()*10>Integer.parseInt(reco)) { recor.filewriter(); } break; case3: if((w.getY()>point.getY()&&w.getY() { if(w.getX()>point.getX()&&w.getX() { ismove=false; point=newWormpoint(); point.setWidth(10); point.setX((int)(Math.random()*450)); point.setY((int)(Math.random()*380)); Wormpoint.length++; recor.cadd(); } } if(recor.getcount()*10>Integer.parseInt(reco)) { recor.filewriter(); } break; case4: if((w.getY()>point.getY()&&w.getY() { if(w.getX()+w.getWidth()>point.getX()&&w.getX()+w.getWidth() { ismove=false; point=newWormpoint(); point.setWidth(10); point.setX((int)(Math.random()*450)); point.setY((int)(Math.random()*380)); Wormpoint.length++; recor.cadd(); } } if(recor.getcount()*10>Integer.parseInt(reco)) { recor.filewriter(); } break; } } publicvoidpaint(Graphicsg) { super.paint(g); g.fillRect(0,0,450,400); g.setColor(Color.cyan); if(! point.isIseate()) {g.fillOval(point.getX(),point.getY(),point.getWidth(),point.getWidth()); } g.setColor(Color.DARK_GRAY); g.setFont(newFont("宋体",Font.BOLD,20)); g.drawString("我的得分: "+recor.getcount()*10,460,50); g.drawString("我的记录: "+reco,460,80); Wormpointw; for(inti=0;i {w=vp.get(i); g.setColor(Color.red); g.fill3DRect(w.getX(),w.getY(),w.getWidth(),w.getWidth(),false); g.setColor(Color.black); g.drawRect(w.getX(),w.getY(),w.getWidth(),w.getWidth()); } } classMytaskextendsTimerTask{ publicvoidrun(){ Wormpointw=vp.get(0); Wormpointxin=newWormpoint(); intdirect=w.getDirestion(); switch(direct) { case1: xin.setX(w.getX()); xin.setDirestion(w.getDirestion()); xin.setY(w.getY()-w.getWidth()*speed); if(xin.getY()<=0) xin.setY(400-xin.getWidth()); break;//up case2: xin.setX(w.getX()); xin.setDirestion(w.getDirestion()); xin.setY(w.getY()+w.getWidth()*speed); if(xin.getY()+xin.getWidth()>=400) xin.setY(0); break;//down case3: xin.setX(w.getX()-w.getWidth()*speed); xin.setDirestion(w.getDirestion()); xin.setY(w.getY()); if(xin.getX()<=0) xin.setX(450-xin.getWidth()); break;//left case4: xin.setX(w.getX()+w.getWidth()*speed); xin.setDirestion(w.getDirestion()); xin.setY(w.getY()); if(xin.getX()+xin.getWidth()>=450) xin.setX(0); break;//right } vp.add(0,xin); touch(); if(ismove&&speed! =0) vp.remove(vp.size()-1); ismove=true; repaint(); } } publicvoidkeyPressed(KeyEvente){ if(e.getKeyCode()==e.VK_UP) { vp.get(0).setDirestion (1);//up } if(e.getKeyCode()==e.VK_DOWN) { vp.get(0).setDirestion (2);//down } if(e.getKeyCode()==e.VK_LEFT) { vp.get(0).setDirestion(3);//left } if(e.getKeyCode()==e.VK_RIGHT) { vp.get(0).setDirestion(4); } } publicvoidkeyReleased(KeyEvente){ //TODOAuto-generatedmethodstub } publicvoidkeyTyped(KeyEvente){ //TODOAuto-generatedmethodstub } } //单元类 packagecom.test; publicclassWormpoint{ privateintx; privateinty; privateintdirestion=2; staticintlength=5; privatebooleaniseate=false; publicbooleanisIseate(){ returniseate; } publicvoidsetIseate(booleaniseate){ this.iseate=iseate; } publicintgetLength(){ returnlength; } publicvoidsetLength(intlength){ this.length=length; } privateintwidth=8; publicintgetWidth(){ returnwidth; } publicvoidsetWidth(intwidth){ this.width=width; } publicintgetDirestion(){ returndirestion; } publicvoidsetDirestion(intdirestion){ this.direstion=direstion; } publicintgetX(){ returnx; } publicvoidsetX(intx){ this.x=x; } publicintgetY(){ returny; } publicvoidsetY(inty){ this.y=y; } } //记录类 packagecom.test; importjava.io.*; publicclassRecorder{ privateintcount=0; publicStringrecorder; publicvoidcadd() { count++; } publicintgetcount() { returncount; } publicvoidfilereader
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪吃 游戏 代码