日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java實現簡單的貪吃蛇游戲

瀏覽:81日期:2022-08-09 09:35:06

本文實例為大家分享了Java實現簡單貪吃蛇游戲的具體代碼,供大家參考,具體內容如下

代碼

啟動類

package snake;import javax.swing.*;//游戲的主啟動類public class StartGame { public static void main(String[] args) {JFrame frame = new JFrame('貪吃蛇');frame.setBounds(10,10,900,720);frame.setResizable(false); //窗口不可調整frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//正常游戲界面都應該在面板上frame.add(new GamePanel());frame.setVisible(true); }}

游戲畫板

package snake;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.util.Random;//游戲面板public class GamePanel extends JPanel implements KeyListener, ActionListener { int lenth; //蛇的長度 int [] snakeX = new int[600]; //定義蛇的坐標X int [] snakeY = new int[500]; //定義蛇的坐標Y String fx ;//定義方向R:右 L:左 U:上 D:下 boolean isStart = false; //游戲是否開始 Timer timer = new Timer(120,this);//定時器 //定義一個食物 int foodx; int foody; Random random = new Random(); //定義死亡判斷 boolean isFail = false;//默認不失敗 //積分系統 int score; //構造器 public GamePanel(){init();//獲取鍵盤的監聽事件this.setFocusable(true);this.addKeyListener(this);timer.start(); } //初始化 public void init(){lenth = 3;snakeX[0] = 100;snakeY[0] = 100;//頭部坐標snakeX[1] = 75;snakeY[1] = 100;//第一個身體坐標snakeX[2] = 50;snakeY[2] = 100;//第二個身體坐標fx = 'R';//蛇頭初始方向//初始化食物foodx = 25 + 25 * random.nextInt(34);foody = 75 + 25 * random.nextInt(24);score = 0; } //繪制面板,游戲中的所以東西都使用這個東西來畫 @Override protected void paintComponent(Graphics g) {super.paintComponent(g); //清屏作用//繪制靜態的面板this.setBackground(Color.white);Data.header.paintIcon(this,g,25,11);//放進頭部廣告g.fillRect(25,75,850,600);//默認游戲界面//畫一條靜態的小蛇if (fx.equals('R')){ Data.right.paintIcon(this,g,snakeX[0],snakeY[0]);}else if (fx.equals('L')){ Data.left.paintIcon(this,g,snakeX[0],snakeY[0]);}else if (fx.equals('U')){ Data.up.paintIcon(this,g,snakeX[0],snakeY[0]);}else if (fx.equals('D')){ Data.down.paintIcon(this,g,snakeX[0],snakeY[0]);}//蛇的身體長度通過length來控制for (int i = 1;i < lenth;i++){ Data.body.paintIcon(this,g,snakeX[i],snakeY[i]);}//畫積分g.setColor(Color.white);g.setFont(new Font('微軟雅黑',Font.BOLD,20));g.drawString('長度'+lenth,700,45);g.drawString('分數'+score,780,45);//畫食物Data.food.paintIcon(this,g,foodx,foody);//游戲提示:是否開始if (isStart == false){ //畫一個文字String來提示開始 g.setColor(Color.white); //定義顏色 g.setFont(new Font('微軟雅黑',Font.BOLD,40)); //設置字體 g.drawString('按下空格開始游戲',300,300);}//失敗提醒if (isFail){ //畫一個文字String來提示失敗 g.setColor(Color.RED); //定義顏色 g.setFont(new Font('微軟雅黑',Font.BOLD,40)); //設置字體 g.drawString('游戲失敗,按下空格重新開始',200,300);} }//接收鍵盤的輸入:監聽事件 @Override//鍵盤按下,未釋放 public void keyPressed(KeyEvent e) {//獲取按下鍵盤的信息int keyCode = e.getKeyCode();if(keyCode==KeyEvent.VK_SPACE){//如果按下空格鍵 if (isFail){//游戲失敗,重新開始isFail = false;init();//重新初始化游戲 }else {//暫停游戲isStart = !isStart; } repaint();//刷新界面,重置}//鍵盤控制走向if (keyCode==KeyEvent.VK_LEFT){ fx = 'L';}else if (keyCode==KeyEvent.VK_RIGHT){ fx = 'R';}else if (keyCode==KeyEvent.VK_UP) { fx = 'U';}else if (keyCode==KeyEvent.VK_DOWN) { fx = 'D';} } //定時器,監聽時間,幀,執行定時操作 @Override public void actionPerformed(ActionEvent e) {//如果游戲處于開始狀態,并且游戲沒有失敗if (isStart && isFail == false){ //右移 for (int i = lenth-1 ;i > 0;i--){ //身體向前移動snakeX[i] = snakeX[i-1];snakeY[i] = snakeY[i-1]; } //通過控制方向讓頭部移動 if (fx.equals('R')){snakeX[0] = snakeX[0] + 25;//頭部移動if (snakeX[0]>850){ snakeX[0] = 25; }//右邊界判斷 }else if (fx.equals('L')){snakeX[0] =snakeX[0] - 25;//頭部移動if (snakeX[0]<25){ snakeX[0] = 850;}//左邊界判斷 }else if (fx.equals('U')){snakeY[0] =snakeY[0] - 25;//頭部移動if (snakeY[0]<75){ snakeY[0] = 650;}//上邊界判斷 }else if (fx.equals('D')){snakeY[0] =snakeY[0] + 25;//頭部移動if (snakeY[0]>650){ snakeY[0] = 75;}//下邊界判斷 } //如果食物和蛇頭坐標重合 if (snakeX[0]==foodx && snakeY[0]==foody){lenth ++;//蛇的身體長度加一score = score + 10;//重新生成食物foodx = 25 +25 * random.nextInt(34);foody = 75 +25 * random.nextInt(24); } //結束判斷 for (int i = 1; i<lenth;i++){if (snakeX[0]==snakeX[i] && snakeY[0]==snakeY[i]){ isFail = true;} } repaint();//刷新界面}timer.start();//讓時間動起來 } @Override//鍵盤按下,彈起 public void keyTyped(KeyEvent e) { } @Override//釋放某個鍵 public void keyReleased(KeyEvent e) { }}

游戲數據(存放圖片)

package snake;import javax.swing.*;import java.net.URL;//數據中心public class Data { //相對路徑 tx.jpg 絕對路徑 /相當于當前的項目 //頭部圖片 URL 定位圖片地址 public static URL headerURL = Data.class.getResource('/statics/header.png'); public static ImageIcon header = new ImageIcon(headerURL); //上下左右移動 public static URL upUrl = Data.class.getResource('/statics/up.png'); public static ImageIcon up = new ImageIcon(upUrl); public static URL downUrl = Data.class.getResource('/statics/down.png'); public static ImageIcon down = new ImageIcon(downUrl); public static URL leftUrl = Data.class.getResource('/statics/left.png'); public static ImageIcon left = new ImageIcon(leftUrl); public static URL rightUrl = Data.class.getResource('/statics/right.png'); public static ImageIcon right = new ImageIcon(rightUrl); //身體 public static URL bodyUrl = Data.class.getResource('/statics/body.png'); public static ImageIcon body = new ImageIcon(bodyUrl); //食物 public static URL foodUrl = Data.class.getResource('/statics/food.png'); public static ImageIcon food = new ImageIcon(foodUrl);}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品99一区二区| 在线手机中文字幕| 日韩视频一区| 亚洲福利国产| 999在线观看精品免费不卡网站| 亚洲香蕉网站| 国产精品呻吟| 中文日韩欧美| 亚洲综合小说| **爰片久久毛片| 欧美成人精品一级| 国产精品成人a在线观看| 欧洲亚洲一区二区三区| japanese国产精品| 首页欧美精品中文字幕| 亚洲精品裸体| 国产精品亚洲综合色区韩国| 国产精品日本一区二区三区在线| 欧美激情视频一区二区三区免费| 美女免费视频一区| 国产拍在线视频| 久久国产电影| 午夜日韩福利| 日本不卡视频在线观看 | 一区二区三区四区日本视频| 日韩在线中文| 国产模特精品视频久久久久| 四虎在线精品| 国产精品啊啊啊| av高清不卡| 中文精品视频| 欧美精品国产白浆久久久久| 成人国产精品久久| 夜夜精品视频| 97久久精品| 亚洲风情在线资源| 免费av一区二区三区四区| 免费成人在线观看| 毛片不卡一区二区| 免费国产自久久久久三四区久久| 视频一区二区三区中文字幕| 久久国产婷婷国产香蕉| 国产h片在线观看| 视频一区视频二区中文| 另类小说一区二区三区| 激情五月综合| 国产精品久久国产愉拍| 成人精品亚洲| 亚洲在线久久| 精品美女在线视频| 日韩一区二区免费看| 91精品国产自产在线丝袜啪| 日韩精品诱惑一区?区三区| 久久亚洲视频| 国产精品99在线观看| 视频一区二区三区入口| 国内不卡的一区二区三区中文字幕| 亚洲无线一线二线三线区别av| 日韩国产高清在线| 久久婷婷激情| 国产精品亚洲四区在线观看| 亚洲二区精品| 里番精品3d一二三区| 免费日韩视频| 亚洲精品成人图区| 777久久精品| 99精品国产一区二区三区| 国产欧美日韩一区二区三区四区| 亚州av乱码久久精品蜜桃| 牛牛精品成人免费视频| 首页国产欧美日韩丝袜| 日韩在线看片| 国产精品777777在线播放| 蜜桃av一区| 成人羞羞在线观看网站| 国产精品天天看天天狠| 视频一区二区不卡| 秋霞国产精品| 黄色网一区二区| 日韩精品一区二区三区免费视频| 国产一区二区三区自拍| 免费亚洲一区| 综合国产精品| 亚洲激情婷婷| 久久久一本精品| 久久这里只有| 欧美久久香蕉| 免费在线视频一区| 久久美女性网| 91亚洲国产高清| 国产欧美一区二区精品久久久| 在线视频精品| 婷婷激情久久| 国产美女高潮在线观看| 日本欧美一区二区在线观看| 在线亚洲观看| 91精品国产福利在线观看麻豆| 国产精品嫩草影院在线看| 99日韩精品| 狠狠操综合网| 久久一区二区中文字幕| yellow在线观看网址| 国产精品99精品一区二区三区∴| 日韩欧美中文字幕一区二区三区| 伊人成人网在线看| 91精品国产乱码久久久久久久| 成人黄色av| 日韩成人a**站| 麻豆国产91在线播放| 国产精品亲子伦av一区二区三区| 在线日韩成人| 欧美日韩国产免费观看视频| 日韩精品一区二区三区免费观影 | 先锋影音久久久| 欧美日韩国产综合网| 免费福利视频一区二区三区| 美女视频黄免费的久久| 国产图片一区| 日韩国产91| 日本成人在线视频网站| 日本不卡高清视频| 日本成人在线一区| 亚洲人妖在线| 免费高清在线一区| 免费国产自线拍一欧美视频| 日韩不卡免费高清视频| 美女av在线免费看| 亚洲三级欧美| 亚洲a一区二区三区| 欧美jjzz| 夜夜嗨一区二区| 99亚洲视频| 久色成人在线| 四虎国产精品免费久久| 天堂久久一区| 欧美色综合网| 国产精品1区| 国产a亚洲精品| 日韩一区二区中文| 日韩中文视频| 久久九九电影| 欧美91精品| 美女精品在线| 日韩黄色av| 国产免费av一区二区三区| 国产精品流白浆在线观看| 久久精品福利| 9999国产精品| 99久久亚洲精品| 老鸭窝毛片一区二区三区| 亚洲精品福利| 国产精品成人3p一区二区三区| 麻豆91精品91久久久的内涵| 高清日韩欧美| 国产主播一区| 亚洲国产一区二区三区在线播放 | 亚洲女同中文字幕| 麻豆亚洲精品| 国产日韩欧美中文在线| 欧美精品导航| 国产伦久视频在线观看| 激情婷婷久久| 91成人福利| sm久久捆绑调教精品一区| 亚洲一本视频| 亚洲精品九九| 国产一区不卡| av不卡免费看| 亚洲1区在线| 久久99国产精品视频| 久久婷婷av| 亚洲精品系列| 国产66精品| 蜜桃久久av| 欧美91在线| 国内亚洲精品| 日本中文字幕视频一区| 久久精品一区二区三区中文字幕| av高清一区| 亚洲免费成人av在线| 视频在线不卡免费观看| 在线综合亚洲| 久久字幕精品一区| 成人午夜国产| 一区二区不卡| 国精品产品一区| 首页欧美精品中文字幕| 蜜桃久久久久| 丝袜亚洲另类欧美| 免费一级欧美在线观看视频| 蜜臀91精品国产高清在线观看| 欧美在线不卡| 蜜臀久久99精品久久一区二区| 日本午夜精品久久久久| 久久久久午夜电影| 欧美中文一区| 久久久久欧美精品| 欧美久久精品| 久久一区二区中文字幕| 欧美一级网站|