贪吃蛇游戏代码Word格式文档下载.docx
《贪吃蛇游戏代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《贪吃蛇游戏代码Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
存盘退出"
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);
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<
Wormpoint>
al=this.wp.vp;
FileWriterfw=null;
BufferedWriterbw=null;
try{
fw=newFileWriter("
D:
/Recording.txt"
bw=newBufferedWriter(fw);
for(inti=0;
i<
al.size();
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+"
}
}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();
al=newArrayList<
();
FileReaderfr=null;
BufferedReaderbr=null;
fr=newFileReader("
br=newBufferedReader(fr);
Stringst;
st=br.readLine();
Wormpointhead=newWormpoint();
head.setDirestion(Integer.parseInt(st));
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;
br.close();
fr.close();
}
//面板类进行界面操作
importjava.awt.List;
importjava.awt.event.KeyEvent;
importjava.awt.event.KeyListener;
importjava.util.*;
importjava.util.Timer;
publicclassWormpanelextendsJPanelimplementsKeyListener{
ArrayList<
vp=newArrayList<
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;
Wormpoint.length;
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()<
point.getX()+point.getWidth()&
&
w.getX()>
point.getX())||(w.getX()+w.getWidth()<
w.getX()+w.getWidth()>
point.getX()))
if(w.getY()<
point.getY()+point.getWidth()&
w.getY()>
point.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()<
w.getY()+w.getWidth()>
{
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>
recor.filewriter();
case3:
if((w.getY()>
point.getY()&
w.getY()<
point.getY()+point.getWidth())||(w.getY()+w.getWidth()>
w.getY()+w.getWidth()<
point.getY()+point.getWidth()))
if(w.getX()>
point.getX()&
w.getX()<
point.getX()+point.getWidth())
case4:
if((w.getY()>
if(w.getX()+w.getWidth()>
w.getX()+w.getWidth()<
{
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);
我的记录:
+reco,460,80);
Wormpointw;
vp.size();
{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.setY(w.getY()+w.getWidth()*speed);
if(xin.getY()+xin.getWidth()>
=400)
xin.setY(0);
//down
case3:
xin.setX(w.getX()-w.getWidth()*speed);
xin.setY(w.getY());
if(xin.getX()<
xin.setX(450-xin.getWidth());
//left
case4:
xin.setX(w.getX()+w.getWidth()*speed);
if(xin.getX()+xin.getWidth()>
=450)
xin.setX(0);
//right
vp.add(0,xin);
touch();
if(ismove&
speed!
vp.remove(vp.size()-1);
ismove=true;
repaint();
publicvoidkeyPressed(KeyEvente){
if(e.getKeyCode()==e.VK_UP)
{
vp.get(0).setDirestion
(1);
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){
//单元类
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;
//记录类
publicclassRecorder{
privateintcount=0;
publicStringrecorder;
publicvoidcadd()
count++;
publicintgetcount()
returncount;
publicvoidfilereader