實(shí)驗(yàn)要求:實(shí)現(xiàn)貪吃蛇游戲基本功能,屏幕上隨機(jī)出現(xiàn)一個(gè)“食物”,稱為豆子,上下左右控制“蛇”的移動(dòng),吃到“豆子”以后“蛇”的身體加長(zhǎng)一點(diǎn),得分增加,“蛇”碰到邊界或,蛇頭與蛇身相撞,蛇死亡,游戲結(jié)束。為游戲設(shè)計(jì)初始?xì)g迎界面,游戲界面,游戲結(jié)束界面。
創(chuàng)新互聯(lián)公司是專業(yè)的西固網(wǎng)站建設(shè)公司,西固接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行西固網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!貪吃蛇的設(shè)計(jì)分為四個(gè)板塊:游戲界面設(shè)計(jì)、游戲過程、游戲結(jié)束和功能擴(kuò)展。
游戲界面設(shè)計(jì)包括界面構(gòu)造、蛇的構(gòu)造、食物構(gòu)造;游戲過程包括蛇的移動(dòng)、蛇吃食物、碰撞檢測(cè);游戲結(jié)束包括結(jié)束界面;擴(kuò)展功能包括功能食物、移動(dòng)速度、得分記錄。
首先對(duì)蛇的長(zhǎng)度以及位置進(jìn)行設(shè)置并設(shè)置食物隨機(jī)出現(xiàn)、定時(shí)器:
int snakelong=2;//蛇當(dāng)前長(zhǎng)度 int[] Snakex=new int[100]; int[] Snakey=new int[100]; Random random=new Random(); int foodx; int foody; Timer timer=new Timer(100, this);//定時(shí)器 int started=0;//游戲信息 0-未開始 1-開始 2-結(jié)束 int fx=1;//蛇的方向 0-左 1-右 2-上 3-下
然后進(jìn)行貪吃蛇界面的設(shè)計(jì):
public void myJFrame() { this.setTitle("貪吃蛇大作戰(zhàn)"); this.setSize(800, 600); this.setDefaultCloseOperation(Snake.EXIT_ON_CLOSE);//界面可退出 this.setResizable(false);//界面不能改變 this.addKeyListener(this); this.setVisible(true); // 蛇的初識(shí)位置 Snakex[0]=60; Snakey[0]=100; Snakex[1]=40; Snakey[1]=100; // 隨機(jī)食物的初識(shí)位置 foodx=random.nextInt(39); foody=random.nextInt(22); foodx=foodx*20; foody=foody*20+80; }
界面構(gòu)造、蛇的構(gòu)造、食物構(gòu)造:
public void paint(Graphics g) { g.setColor(Color.BLUE); g.fillRect(0, 0, 800, 600); g.setColor(Color.black); g.fillRect(0, 80, 800, 520); for (int i=0;i鍵盤上上下左右以及游戲的開始以及結(jié)束:
@Override public void keyPressed(KeyEvent e) { int key=e.getKeyCode(); if (key==KeyEvent.VK_SPACE) { if (started==0) { started=1; } else if(started==1) { started=0; } else if (started==2) { started=0; snakelong=2;//蛇當(dāng)前長(zhǎng)度 //蛇的初識(shí)位置 Snakex[0]=60; Snakey[0]=100; Snakex[1]=40; Snakey[1]= 100; // 隨機(jī)食物的初識(shí)位置 foodx=random.nextInt(39); foody=random.nextInt(22); foodx=foodx*20; foody=foody*20+80; // 初始化方向 fx=1; } repaint(); timer.start(); } else if(key==KeyEvent.VK_LEFT) { if (fx!= 1) { fx=0; } } else if(key==KeyEvent.VK_RIGHT) { if (fx!=0) { fx=1; } } else if(key==KeyEvent.VK_UP) { if (fx!=3) { fx=2; } } else if (key == KeyEvent.VK_DOWN) { if (fx!=2) { fx=3; } } }事件監(jiān)聽:
@Override public void actionPerformed(ActionEvent e) { // 判斷游戲是否開始 if (started==1) { // 通過循環(huán)控制蛇移動(dòng) for (int i=snakelong-1;i>0;i--) { Snakex[i]=Snakex[i-1]; Snakey[i]=Snakey[i-1]; } // 判斷蛇移動(dòng)的方向 if (fx==0) {//蛇的方向 0-左 1-右 2-上 3-下 Snakex[0]=Snakex[0]-20; } else if (fx==1) { Snakex[0]=Snakex[0] + 20; } else if (fx==2) { Snakey[0]=Snakey[0] - 20; } else if (fx==3) { Snakey[0]=Snakey[0] + 20; } // 判斷是否撞墻 if (Snakex[0]<0||Snakex[0]>780||Snakey[0]<80||Snakey[0]>580) { started=2; } // 判斷蛇是否吃到了食物 if (Snakex[0]==foodx&&Snakey[0]==foody) { snakelong++; foodx=random.nextInt(39); foody=random.nextInt(22); foodx=foodx*20; foody=foody*20+80; System.out.println(foodx +","+foody); } // 判斷是否吃到了自己 for (int i=1;i你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站欄目:貪吃蛇小游戲-創(chuàng)新互聯(lián)
文章路徑:http://weahome.cn/article/hpchj.html