CTB

           

          貪吃蛇

          package com.wepull.test;


           
           import java.awt.Color;
           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.JCheckBoxMenuItem;
           import javax.swing.JFrame;
           import javax.swing.JMenu;
           import javax.swing.JMenuBar;
           import javax.swing.JMenuItem;
           import javax.swing.JOptionPane;
           import javax.swing.KeyStroke;

           

           


           public class 貪吃蛇 extends JFrame implements ActionListener, KeyListener,Runnable {
           /**
             *
             */
           private static final long serialVersionUID = 1L;
           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

           private int m[]=new int[50];
           private int n[]=new int[50];
           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++)
             {
              m[i]=90-i*10;n[i]=60;
             }
            
             x=m[0];
             y=n[0];
             z=4;
            
            
             while(she!=null)
             {
             
              check();
              try
              {
               Thread.sleep(time);
              }
              catch(Exception ee)
              {
               System.out.println(z+"");
              }
             }
           }

           public 貪吃蛇() {
           
             setVisible(true);
             menuBar = new JMenuBar();
             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 貪吃蛇();
           }

           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, "千面獨行客"+"\n\n"+"                  "+"QQ號:244897789"+"\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(m[i]==x&&n[i]==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--)
             {
             
              m[i]=m[i-1];
              n[i]=n[i-1];
             }
             if(z==4)
             {
              m[0]=m[0]+10;
             }
             if(z==3)
             {
              m[0]=m[0]-10;
             }
             if(z==2)
             {
              n[0]=n[0]+10;
             }
             if(z==1)
             {
              n[0]=n[0]-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)
           {
            
           }
           public void keyTyped(KeyEvent e)
           {
            
           }
           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(m[i],n[i],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);
           }
           }

           


           

          posted on 2012-05-16 11:01 千面獨行客 閱讀(197) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          搜索

          最新評論

          • 1.?re: 我多想告訴你
          • 煽情……
          • -- _小丸子
          • 2.?re: 我多想告訴你
          • 面對愛情的男人都是情圣,文筆自然也有所提高。小樣,煽情了吧 /偷笑……
          • -- _小丸子
          • 3.?re: 我多想告訴你
          • 到底是什么事兒觸發了你如此之深的感受啊?前提是這是你寫的,嘿嘿~
          • --巧克力
          • 4.?re: 走過自己
          • 剛開始看,呵呵幾個錯別字,看了之后有點兒小沉重,才發現大姐原是個心思很細膩的男生,文筆還可以喲,嘿嘿~
          • --巧克力
          • 5.?re: 無題
          • 我覺得自恃清高沒啥不好的,呵呵~
          • --巧克力

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 上杭县| 阜南县| 清徐县| 眉山市| 原阳县| 临泽县| 桐城市| 曲麻莱县| 九江县| 凭祥市| 庆阳市| 宜兰市| 泗阳县| 正镶白旗| 梧州市| 云浮市| 云南省| 广水市| 新蔡县| 大渡口区| 岳阳县| 勃利县| 琼中| 万源市| 邹平县| 闽清县| 隆子县| 仁化县| 时尚| 醴陵市| 山丹县| 东台市| 固始县| 科技| 新化县| 琼海市| 普兰县| 论坛| 唐山市| 涿鹿县| 晋中市|