小游戏JAVA代码贪吃蛇.docx
小游戏JAVA代码贪吃蛇大家一起学习下O(_)O哈哈贪吃蛇是一款很古董的游戏了,相信大家都玩过,于是写了个贪吃蛇游戏与大家分享,学习是在不断实践中成才的,希望对大家的学习有帮助。package tanChiShe; import java.awt.Color; import java.awt.Container; import java.awt.Graphics; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.*; public class TanChiShe extends JFrame implements ActionListener, KeyListener,Runnable private JMenuBar menuBar; private JMenu youXiMenu,nanDuMenu,fenShuMenu,guanYuMenu; private JMenuItem kaiShiYouXi,exitItem,zuoZheItem,fenShuItem; private JCheckBoxMenuItem cJianDan,cPuTong,cKunNan; private int length = 6; private Toolkit toolkit; private int i,x,y,z,objectX,objectY,object=0,growth=0,time;/bojectX,Y为食物坐标,z为蛇前进方向 private int difficult=2; private int m=new int50; private int n=new int50; private Thread she = null; private int life=0; private int foods = 0; private int fenshu=0; public void run time=500; for(i=0;i<=length-1;i+) mi=90-i*10;ni=60; x=m0; y=n0; z=4; while(she!=null) check; try she.sleep(time); catch(Exception ee) System.out.println(z+""); public TanChiShe /*创建新对象* setVisible(true); menuBar = new JMenuBar; Container con=getContentPane; toolkit=getToolkit; /*游戏菜单对象* youXiMenu = new JMenu("游戏"); kaiShiYouXi = new JMenuItem("开始游戏"); exitItem = new JMenuItem("退出游戏"); /*困难程度对象* nanDuMenu = new JMenu("困难程度"); cJianDan = new JCheckBoxMenuItem("简单"); cPuTong = new JCheckBoxMenuItem("普通"); cKunNan = new JCheckBoxMenuItem("困难"); /*分数菜单对象* fenShuMenu = new JMenu("积分排行"); fenShuItem = new JMenuItem("最高记录"); /*关于对象* guanYuMenu = new JMenu("关于"); zuoZheItem = new JMenuItem("关于作者"); /*设置关于菜单* guanYuMenu.add(zuoZheItem); /*设置困难程度菜单* nanDuMenu.add(cJianDan); nanDuMenu.add(cPuTong); nanDuMenu.add(cKunNan); /*设置分数菜单* fenShuMenu.add(fenShuItem); /*设置游戏菜单* youXiMenu.add(kaiShiYouXi); youXiMenu.add(exitItem); /*设置主菜单* menuBar.add(youXiMenu); menuBar.add(nanDuMenu); menuBar.add(fenShuMenu); menuBar.add(guanYuMenu); /*监听注册* zuoZheItem.addActionListener(this); kaiShiYouXi.addActionListener(this); exitItem.addActionListener(this); addKeyListener(this); fenShuItem.addActionListener(this); /*加快捷键* KeyStroke keyOpen = KeyStroke.getKeyStroke('O',InputEvent.CTRL_DOWN_MASK); kaiShiYouXi.setAccelerator(keyOpen); KeyStroke keyExit = KeyStroke.getKeyStroke('X',InputEvent.CTRL_DOWN_MASK); exitItem.setAccelerator(keyExit); /*设置框架* setJMenuBar(menuBar); setTitle("贪吃蛇"); setResizable(false); setBounds(300,200,400,400); validate; setDefaultCloseOperation(EXIT_ON_CLOSE); public static void main(String args) new TanChiShe; /*菜单监听* public void actionPerformed(ActionEvent e) if(e.getSource=kaiShiYouXi) length = 6; life = 0; foods = 0; if(she=null) she=new Thread(this); she.start; else if(she!=null) she=null; she= new Thread(this); she.start; if(e.getSource=exitItem) System.exit(0); if(e.getSource=zuoZheItem) JOptionPane.showMessageDialog(this, "北京java编程爱好者制作"+"nn"+" "+"QQ号:860695120"+"n"); if(e.getSource=fenShuItem) JOptionPane.showMessageDialog(this,"最高记录为"+fenshu+""); /*检查一下* public void check isDead; if(she!=null) if(growth=0) reform; /得到食物 else upgrowth; /生成食物 if(x=objectX&&y=objectY) object=0; growth=1; toolkit.beep; /*产生食物坐标* if(object=0) object=1; objectX=(int)Math.floor(Math.random*39)*10; objectY=(int)Math.floor(Math.random*29)*10+50; this.repaint; /重绘 void isDead /判断游戏是否结束的方法 if(z=4) x=x+10; else if(z=3) x=x-10; else if(z=2) y=y+10; else if(z=1) y=y-10; if(x<0|x>390|y<50|y>390) she=null; for(i=1;i<length;i+) if(mi=x&&ni=y) she=null; public void upgrowth /当蛇吃到东西时的方法 if(length<50) length+; growth-; time=time-10; reform; life+=100; if(fenshu<life) fenshu = life; foods+; public void reform for(i=length-1;i>0;i-) mi=mi-1; ni=ni-1; if(z=4) m0=m0+10; if(z=3) m0=m0-10; if(z=2) n0=n0+10; if(z=1) n0=n0-10; public void keyPressed(KeyEvent e) if(she!=null) if(e.getKeyCode=KeyEvent.VK_UP) if(z!=2) z=1; check; else if(e.getKeyCode=KeyEvent.VK_DOWN) if(z!=1) z=2; check; else if(e.getKeyCode=KeyEvent.VK_LEFT) if(z!=4) z=3; check; else if(e.getKeyCode=KeyEvent.VK_RIGHT) if(z!=3) z=4; check; public void keyReleased(KeyEvent e) / TODO 自动生成方法存根 public void keyTyped(KeyEvent e) / TODO 自动生成方法存根 public void paint(Graphics g) /*画图* g.setColor(Color.DARK_GRAY); /设置背景 g.fillRect(0,50,400,400); g.setColor(Color.pink); for(i=0;i<=length-1;i+) g.fillRect(mi,ni,10,10); g.setColor(Color.green); /蛇的食物 g.fillRect(objectX,objectY,10,10); g.setColor(Color.white); g.drawString("当前 分数"+this.life,6,60); g.drawString("当前已吃食物数"+this.foods,6,72);