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

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

java swing框架實現貪吃蛇游戲

瀏覽:9日期:2022-08-19 13:25:05

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

1、編寫main方法

package game;import java.awt.Graphics;import javax.swing.*;public class snakeMain extends JFrame { public snakeMain() { snakeWin win = new snakeWin(); add(win); setTitle('̰貪吃蛇v1.0'); setSize(435,390); setLocation(200, 200); setVisible(true); } public static void main(String[] args) { new snakeMain(); }}

2、編寫實體類

package game;public class snakeAct { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } }

3、編寫主要程序

package game;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.util.List;public class snakeWin extends JPanel implements ActionListener,KeyListener,Runnable{ int fenShu=0,Speed=0; boolean start = false; int rx=0,ry=0; int eat1=0,eat2=0; JDialog dialog = new JDialog(); JLabel label = new JLabel('你掛了!你的分數'+fenShu+''); JButton ok = new JButton('T_T'); Random r = new Random(); JButton newGame,stopGame; List<snakeAct> list = new ArrayList<snakeAct>(); int temp=0; Thread nThread; public snakeWin() { newGame = new JButton('開始'); stopGame = new JButton('結束'); newGame.addActionListener(this); stopGame.addActionListener(this); this.addKeyListener(this); this.setLayout(new FlowLayout(FlowLayout.LEFT)); this.add(newGame); this.add(stopGame); dialog.setLayout(new GridLayout(2, 1)); dialog.add(label); dialog.add(ok); dialog.setSize(200, 200); dialog.setLocation(200, 200); dialog.setVisible(false); ok.addActionListener(this); } public void paintComponent(Graphics g){ super.paintComponent(g); g.drawRect(10, 40, 400, 300); g.drawString('分數'+fenShu, 150, 15); g.drawString('速度'+Speed, 150, 35); g.setColor(new Color(0, 255, 0)); if(start){ g.fillRect(10+rx*10, 40+ry*10, 10, 10); for (int i = 0; i < list.size(); i++) { g.setColor(new Color(0, 0, 255)); g.fillRect(10+list.get(i).getX()*10, 40+list.get(i).getY()*10, 10, 10); } } } public void actionPerformed(ActionEvent e) { if(e.getSource()==newGame){ newGame.setEnabled(false); start = true; rx=r.nextInt(40);ry=r.nextInt(30); snakeAct tempAct = new snakeAct(); tempAct.setX(20); tempAct.setY(15); list.add(tempAct); this.requestFocus(); nThread = new Thread(this); nThread.start(); repaint(); } if(e.getSource()==stopGame){ System.exit(0); } if(e.getSource()==ok){ list.clear(); start=false; newGame.setEnabled(true); dialog.setVisible(false); fenShu=0; Speed=0; repaint(); } } private void eat() { if (rx==list.get(0).getX()&&ry==list.get(0).getY()) { rx = r.nextInt(40);ry = r.nextInt(30); snakeAct tempAct = new snakeAct(); tempAct.setX(list.get(list.size()-1).getX()); tempAct.setY(list.get(list.size()-1).getY()); list.add(tempAct); fenShu = fenShu+100*Speed+10; eat1++; if(eat1-eat2>=4){ eat2=eat1; Speed++; } } } public void otherMove(){ snakeAct tempAct = new snakeAct(); for (int i = 0; i < list.size(); i++) { if (i==1) { list.get(i).setX(list.get(0).getX()); list.get(i).setY(list.get(0).getY()); }else if(i>1){ tempAct=list.get(i-1); list.set(i-1, list.get(i)); list.set(i, tempAct); } } } public void move(int x,int y){ if (minYes(x, y)) { otherMove(); list.get(0).setX(list.get(0).getX()+x); list.get(0).setY(list.get(0).getY()+y); eat(); repaint(); }else { nThread = null; label.setText('你掛了!你的分數'+fenShu+''); dialog.setVisible(true); } } public boolean minYes(int x,int y){ if (!maxYes(list.get(0).getX()+x,list.get(0).getY()+ y)) { return false; } return true; } public boolean maxYes(int x,int y){ if (x<0||x>=40||y<0||y>=30) { return false; } for (int i = 0; i < list.size(); i++) { if (i>1&&list.get(0).getX()==list.get(i).getX()&&list.get(0).getY()==list.get(i).getY()) { return false; } } return true; } public void keyPressed(KeyEvent e) { if(start){ switch (e.getKeyCode()) { case KeyEvent.VK_UP: move(0, -1); temp=1; break; case KeyEvent.VK_DOWN: move(0, 1); temp=2; break; case KeyEvent.VK_LEFT: move(-1, 0); temp=3; break; case KeyEvent.VK_RIGHT: move(1, 0); temp=4; break; default: break; } } } public void keyReleased(KeyEvent e) {} public void keyTyped(KeyEvent e) {} public void run() { while (start) { switch (temp) { case 1: move(0, -1); break; case 2: move(0, 1); break; case 3: move(-1, 0); break; case 4: move(1, 0); break; default: break; } repaint(); try { Thread.sleep(300-30*Speed); } catch (InterruptedException e) { e.printStackTrace(); } } }}

4、效果圖

java swing框架實現貪吃蛇游戲

更多有趣的經典小游戲實現專題,分享給大家:

C++經典小游戲匯總

python經典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經典游戲 玩不停

javascript經典小游戲匯總

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

標簽: Java
相關文章:
主站蜘蛛池模板: 颚式破碎机,圆锥破碎机,制砂机-新乡市德诚机电制造有限公司 | 谷歌关键词优化-外贸网站优化-Google SEO小语种推广-思亿欧外贸快车 | 旅游规划_旅游策划_乡村旅游规划_景区规划设计_旅游规划设计公司-北京绿道联合旅游规划设计有限公司 | 护腰带生产厂家_磁石_医用_热压护腰_登山护膝_背姿矫正带_保健护具_医疗护具-衡水港盛 | 中医治疗皮肤病_潍坊银康医院「山东」重症皮肤病救治平台 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 粉末冶金-粉末冶金齿轮-粉末冶金零件厂家-东莞市正朗精密金属零件有限公司 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 硫化罐_蒸汽硫化罐_大型硫化罐-山东鑫泰鑫智能装备有限公司 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | sfp光模块,高速万兆光模块工厂-性价比更高的光纤模块制造商-武汉恒泰通 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 钢衬玻璃厂家,钢衬玻璃管道 -山东东兴扬防腐设备有限公司 | 智能垃圾箱|垃圾房|垃圾分类亭|垃圾分类箱专业生产厂家定做-宿迁市传宇环保设备有限公司 | 机构创新组合设计实验台_液压实验台_气动实训台-戴育教仪厂 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | ORP控制器_ORP电极价格-上优泰百科| 中山市派格家具有限公司【官网】 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 灌木树苗-绿化苗木-常绿乔木-价格/批发/基地 - 四川成都途美园林 | 酒瓶_酒杯_玻璃瓶生产厂家_徐州明政玻璃制品有限公司 | 长城人品牌官网| 天津电机维修|水泵维修-天津晟佳机电设备有限公司 | 粉末包装机,拆包机厂家,价格-上海强牛包装机械设备有限公司 | ph计,实验室ph计,台式ph计,实验室酸度计,台式酸度计 | 立式硫化罐-劳保用品硫化罐-厂家直销-山东鑫泰鑫硫化罐厂家 | 新型游乐设备,360大摆锤游乐设备「诚信厂家」-山东方鑫游乐设备 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 福建成考网-福建成人高考网| ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 铝合金脚手架厂家-专注高空作业平台-深圳腾达安全科技 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 西安耀程造价培训机构_工程预算实训_广联达实作实操培训 | 光谱仪_积分球_分布光度计_灯具检测生产厂家_杭州松朗光电【官网】 | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 武汉宣传片制作-视频拍摄-企业宣传片公司-武汉红年影视 | 熔体泵_熔体出料泵_高温熔体泵-郑州海科熔体泵有限公司 | 掺铥光纤放大器-C/L波段光纤放大器-小信号光纤放大器-合肥脉锐光电技术有限公司 | 收录网| 塑料托盘厂家直销-吹塑托盘生产厂家-力库塑业【官网】 |