电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java貪吃蛇游戲?qū)崿F(xiàn)代碼

瀏覽:53日期:2022-08-22 13:12:43

GUI編程實(shí)現(xiàn)貪吃蛇小游戲,供大家參考,具體內(nèi)容如下

1、編寫主方法實(shí)現(xiàn)啟動(dòng)類,供大家參考,具體內(nèi)容如下2、準(zhǔn)備好素材圖片,編寫數(shù)據(jù)類3、代碼主體部分:在panel面板上實(shí)現(xiàn)游戲初始化,鍵盤和事件的監(jiān)聽等功能4、代碼運(yùn)行效果圖5、GitHub源碼鏈接

1、編寫主方法實(shí)現(xiàn)啟動(dòng)類

import javax.swing.*; //主啟動(dòng)類 public class StartGame { public static void main(String[] args) { JFrame jFrame = new JFrame('貪吃蛇小游戲'); jFrame.setBounds(10,10,900,720); jFrame.setResizable(false); //設(shè)置窗口大小不可變 jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //面板 jFrame.add(new GamePanel()); jFrame.setVisible(true); }}

2、準(zhǔn)備好素材圖片,編寫數(shù)據(jù)類

import javax.swing.*;import java.net.URL;public class Data { //頭部圖片 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 URL downURL = Data.class.getResource('statics/down.png'); public static URL leftURL = Data.class.getResource('statics/left.png'); public static URL rightURL = Data.class.getResource('statics/right.png'); public static ImageIcon up = new ImageIcon(upURL); public static ImageIcon down = new ImageIcon(downURL); public static ImageIcon left = new ImageIcon(leftURL); 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);}

3、代碼主體部分:在panel面板上實(shí)現(xiàn)游戲初始化,鍵盤和事件的監(jiān)聽等功能

package com.abc.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 { //定義蛇的數(shù)據(jù)結(jié)構(gòu) int length; //蛇的長(zhǎng)度 int[] snakeX = new int[600]; //蛇的x坐標(biāo) 25*25 int[] snakeY = new int[500]; //蛇的y坐標(biāo) 25*25 String fx; //食物 int foodx; int foody; Random random = new Random(); int score; //游戲分?jǐn)?shù) //游戲當(dāng)前的狀態(tài) boolean isStart = false; boolean isFail = false; //定時(shí)器 Timer timer = new Timer(100,this);//100毫秒刷新一次 //構(gòu)造方法 public GamePanel() { init();//初始化 this.setFocusable(true); //獲得焦點(diǎn)事件 this.addKeyListener(this); //獲得鍵盤監(jiān)聽事件 timer.start(); //游戲一開始 定時(shí)器就啟動(dòng) } //初始化方法 public void init(){ length = 3; //初始化開始的蛇,給蛇定位 snakeX[0] = 100;snakeY[0] = 100; snakeX[1] = 75;snakeY[1] = 100; snakeX[2] = 50;snakeY[2] = 100; fx = 'R'; //初始方向向右 //初始化食物數(shù)據(jù) foodx = 25 + 25*random.nextInt(34); foody = 75 + 25*random.nextInt(24); //初始化游戲分?jǐn)?shù) score = 0; } //繪制面板 @Override protected void paintComponent(Graphics g) { super.paintComponent(g);//清屏 this.setBackground(Color.white);//設(shè)置面板背景色 Data.header.paintIcon(this,g,25,11);//頭部 g.fillRect(25,75,850,600);//默認(rèn)的黑色游戲區(qū)域 //繪制小蛇 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]); //蛇頭初始化向下 } for (int i = 1; i < length; i++) { Data.body.paintIcon(this,g,snakeX[i],snakeY[i]); } //食物 Data.food.paintIcon(this,g,foodx,foody); //積分 g.setColor(Color.white); g.setFont(new Font('微軟雅黑',Font.BOLD,18)); g.drawString('長(zhǎng)度 '+length,750,35); g.drawString('分?jǐn)?shù) '+score,750,50); //游戲狀態(tài) if (isStart == false){ g.setColor(Color.white); g.setFont(new Font('微軟雅黑',Font.BOLD,40));//設(shè)置字體 g.drawString('按下空格開始游戲',300,300); } //失敗判斷 if (isFail){ g.setColor(Color.red); g.setFont(new Font('微軟雅黑',Font.BOLD,40));//設(shè)置字體 g.drawString('游戲失敗,按下空格重新開始',300,300); } } //鍵盤監(jiān)聽事件 @Override public void keyPressed(KeyEvent e) { int keyCode = e.getKeyCode(); //獲取按鍵 if (keyCode == KeyEvent.VK_SPACE){ if (isFail){ //重新開始 isFail=false; init(); }else { isStart =! isStart; } repaint(); } //鍵盤控制小蛇移動(dòng) if (keyCode==KeyEvent.VK_UP){ fx='U'; }else if (keyCode==KeyEvent.VK_DOWN){ fx='D'; }else if (keyCode==KeyEvent.VK_LEFT){ fx='L'; }else if (keyCode==KeyEvent.VK_RIGHT){ fx='R'; } } //事件監(jiān)聽 @Override public void actionPerformed(ActionEvent e) { if (isStart && isFail ==false){//如果游戲是開始狀態(tài),就讓小蛇動(dòng)起來 //移動(dòng) for (int i = length-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){ length++; score = score + 10; //再次隨機(jī)食物 foodx = 25 + 25*random.nextInt(34); foody = 75 + 25*random.nextInt(24); } //失敗判定,撞到自己 for (int i = 1; i < length; 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) { }}

4、代碼運(yùn)行效果圖

初始化界面:

java貪吃蛇游戲?qū)崿F(xiàn)代碼

游戲中界面:

java貪吃蛇游戲?qū)崿F(xiàn)代碼

游戲結(jié)束界面:

java貪吃蛇游戲?qū)崿F(xiàn)代碼

更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:

C++經(jīng)典小游戲匯總

python經(jīng)典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經(jīng)典游戲 玩不停

java經(jīng)典小游戲匯總

javascript經(jīng)典小游戲匯總

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 物和码官网,物和码,免费一物一码数字化营销SaaS平台 | 仿古瓦,仿古金属瓦,铝瓦,铜瓦,铝合金瓦-西安东申景观艺术工程有限公司 | 深圳市八百通智能技术有限公司官方网站 | 不锈钢复合板厂家_钛钢复合板批发_铜铝复合板供应-威海泓方金属复合材料股份有限公司 | 安徽控制器-合肥船用空调控制器-合肥家电控制器-合肥迅驰电子厂 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 挤塑板-XPS挤塑板-挤塑板设备厂家[襄阳欧格] | 扬州汇丰仪表有限公司| 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 烟台游艇培训,威海游艇培训-烟台市邮轮游艇行业协会 | 钢结构厂房造价_钢结构厂房预算_轻钢结构厂房_山东三维钢结构公司 | arch电源_SINPRO_开关电源_模块电源_医疗电源-东佑源 | 云南成人高考网| 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 过跨车_过跨电瓶车_过跨转运车_横移电动平车_厂区转运车_无轨转运车 | 精密交叉滚子轴承厂家,转盘轴承,YRT转台轴承-洛阳千协轴承 | 团建-拓展-拓展培训-拓展训练-户外拓展训练基地[无锡劲途] | 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 石栏杆_青石栏杆_汉白玉栏杆_花岗岩栏杆 - 【石雕之乡】点石石雕石材厂 | 国际线缆连接网 - 连接器_线缆线束加工行业门户网站 | 板式换网器_柱式换网器_自动换网器-郑州海科熔体泵有限公司 | 纳米涂料品牌 防雾抗污纳米陶瓷涂料厂家_虹瓷科技 | bkzzy在职研究生网 - 在职研究生招生信息咨询平台 | 沉降天平_沉降粒度仪_液体比重仪-上海方瑞仪器有限公司 | 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 | 安徽合肥项目申报咨询公司_安徽合肥高新企业项目申报_安徽省科技项目申报代理 | 济南品牌设计-济南品牌策划-即合品牌策划设计-山东即合官网 | 飞飞影视_热门电影在线观看_影视大全 | 外贸资讯网 - 洞悉全球贸易,把握市场先机 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 | 杰福伦_磁致伸缩位移传感器_线性位移传感器-意大利GEFRAN杰福伦-河南赉威液压科技有限公司 | 东亚液氮罐-液氮生物容器-乐山市东亚机电工贸有限公司 | 查分易-成绩发送平台官网 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 【官网】博莱特空压机,永磁变频空压机,螺杆空压机-欧能优 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 北京中航时代-耐电压击穿试验仪厂家-电压击穿试验机 | bng防爆挠性连接管-定做金属防爆挠性管-依客思防爆科技 | 钢衬玻璃厂家,钢衬玻璃管道 -山东东兴扬防腐设备有限公司 | H型钢切割机,相贯线切割机,数控钻床,数控平面钻,钢结构设备,槽钢切割机,角钢切割机,翻转机,拼焊矫一体机 |