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

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

java實現簡易貪吃蛇游戲

瀏覽:37日期:2022-08-18 18:56:32

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

1.封裝貪吃蛇身體,抽象出貪吃蛇結點類Node,結點用ArrayList存儲

import java.awt.*;public class Node { private int x; private int y; public Node(int x, int y) { this.x = x; this.y = y; } public Node(){ } 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; } public void drawNode(int i, Graphics g){ if(i==0){//頭繪制成圓 g.fillOval(this.x,this.y,20-1,20-1); }else{//身體繪制成矩形 g.fillRect(this.x,this.y,20-1,20-1); } }}

2.主類

import java.awt.*;import java.awt.event.*;import java.util.ArrayList;public class Snake extends Frame implements KeyListener , ActionListener { //初始蛇移動方向 String fx='right'; //碰撞判斷 boolean is_attack=false; private ArrayList<Node> body=new ArrayList<Node>(); { body.add(new Node(160, 60)); body.add(new Node(140, 60)); body.add(new Node(120, 60)); int x=(int)(Math.random()*580); int y=(int)(Math.random()*580); body.add(new Node(x-x%20,y-y%20)); } /** * 貪吃蛇 * 1、窗體 * 位置(坐標) * 標題 * 大小 * 背景顏色 * 窗體的大小不可變 * 可見 * 2、繪制蛇 */ public Snake(){ //窗體標題 super.setTitle('貪吃蛇游戲'); //窗體位置 super.setLocation(100,100); //窗體大小 super.setSize(600,600); //背景顏色 super.setBackground(new Color(252,255, 208)); //設置窗體可見 super.setVisible(true); // 窗體大小不可變 super.setResizable(false); //給關閉按鈕添加事件 super.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); //獲取聚焦 super.setFocusable(true); //添加鍵盤監聽 super.addKeyListener(this); start(); } public void start(){ while(!is_attack){ try{ Thread.sleep(200); }catch (Exception e){ e.printStackTrace(); } //碰撞檢測 attack_check(); //刷新窗體,調用paint方法 repaint(); } } //碰撞檢測 public void attack_check(){ //撞到身體檢測 for(int i=1;i<body.size()-1;i++){ if (body.get(0).getX()==body.get(i).getX()&&body.get(0).getY()==body.get(i).getY()){ is_attack=true; } } //撞到邊界 if(body.get(0).getX()==0||body.get(0).getX()==600||body.get(0).getY()==0||body.get(0).getY()==600){ is_attack=true; } } //移動貪吃蛇 public void move(){ //吃到食物判斷,頭結點坐標和食物坐標相等 if ((body.get(0).getX()==body.get(body.size()-1).getX())&&(body.get(0).getY()==body.get(body.size()-1).getY())) { //出現下一個食物 int x=(int)(Math.random() * 580); int y=(int)(Math.random() * 580); body.get(body.size()-1).setX(x-x%20); body.get(body.size()-1).setY(y-y%20); //蛇身加一個結點 body.add(body.size()-1,new Node(0,0)); } //移動頭尾節點,使貪吃蛇移動 Node node=body.get(0); if (fx.equals('up')){ node=new Node(node.getX(),node.getY()-20); //加頭 body.add(0,node); //去尾 body.remove(body.size()-2); }if (fx.equals('down')){ node=new Node(node.getX(),node.getY()+20); //加頭 body.add(0,node); //去尾 body.remove(body.size()-2); }if (fx.equals('right')){ node=new Node(node.getX()+20,node.getY()); //加頭 body.add(0,node); //去尾 body.remove(body.size()-2); }if (fx.equals('left')){ node=new Node(node.getX()-20,node.getY()); //加頭 body.add(0,node); //去尾 body.remove(body.size()-2); } } /** * 展示窗體|每一次刷新窗體都會執行的方法 * @param g 畫筆 */ @Override public void paint(Graphics g) { g.setColor(new Color(105, 78,255)); for(int i=0; i<body.size(); i++){ body.get(i).drawNode(i,g); } move(); //游戲結束繪制 if(is_attack){ g.setColor(new Color(255, 67, 40)); Font ft = new Font('宋體', Font.PLAIN, 40); g.setFont(ft); g.drawString('很遺憾,游戲結束',150,300); } } //事件監聽 @Override public void actionPerformed(ActionEvent e) { } @Override public void keyPressed(KeyEvent e) { int keyCode=e.getKeyCode(); if(keyCode==KeyEvent.VK_UP){ fx='up'; }if (keyCode==KeyEvent.VK_DOWN){ fx='down'; }if (keyCode==KeyEvent.VK_LEFT){ fx='left'; }if (keyCode==KeyEvent.VK_RIGHT){ fx='right'; } } @Override public void keyTyped(KeyEvent e) { } @Override public void keyReleased(KeyEvent e) { } /** * main方法 * @param args */ public static void main(String[] args) { new Snake(); }}

運行圖片

java實現簡易貪吃蛇游戲

游戲結束

java實現簡易貪吃蛇游戲

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

標簽: Java
相關文章:
主站蜘蛛池模板: POS机办理_个人pos机免费领取-银联pos机申请首页 | Boden齿轮油泵-ketai齿轮泵-yuken油研-无锡新立液压有限公司 | 广东护栏厂家-广州护栏网厂家-广东省安麦斯交通设施有限公司 | 洗地机_全自动洗地机_手推式洗地机【上海滢皓环保】 | 特种阀门-调节阀门-高温熔盐阀-镍合金截止阀-钛阀门-高温阀门-高性能蝶阀-蒙乃尔合金阀门-福建捷斯特阀门制造有限公司 | 正压密封性测试仪-静态发色仪-导丝头柔软性测试仪-济南恒品机电技术有限公司 | Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | 建筑资质代办_工程施工资质办理_资质代办公司_北京众聚企服 | 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 酒吧霸屏软件_酒吧霸屏系统,酒吧微上墙,夜场霸屏软件,酒吧点歌软件,酒吧互动游戏,酒吧大屏幕软件系统下载 | 潍坊大集网-潍坊信息港-潍坊信息网| 博医通医疗器械互联网供应链服务平台_博医通 | 济南铝方通-济南铝方通价格-济南方通厂家-山东鲁方通建材有限公司 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 贵州成人高考网_贵州成考网| 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 衬氟止回阀_衬氟闸阀_衬氟三通球阀_衬四氟阀门_衬氟阀门厂-浙江利尔多阀门有限公司 | 施工电梯_齿条货梯_烟囱电梯_物料提升机-河南大诚机械制造有限公司 | 宝元数控系统|对刀仪厂家|东莞机器人控制系统|东莞安川伺服-【鑫天驰智能科技】 | 【法利莱住人集装箱厂家】—活动集装箱房,集装箱租赁_大品牌,更放心 | 云阳人才网_云阳招聘网_云阳人才市场_云阳人事人才网_云阳人家招聘网_云阳最新招聘信息 | 考试试题_试卷及答案_诗词单词成语 - 优易学 | 陕西自考报名_陕西自学考试网 | pH污水传感器电极,溶解氧电极传感器-上海科蓝仪表科技有限公司 | 商秀—企业短视频代运营_抖音企业号托管| 清水-铝合金-建筑模板厂家-木模板价格-铝模板生产「五棵松」品牌 | 工业铝型材-铝合金电机壳-铝排-气动执行器-山东永恒能源集团有限公司 | 挤塑板-XPS挤塑板-挤塑板设备厂家[襄阳欧格] | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 圆形振动筛_圆筛_旋振筛_三次元振动筛-河南新乡德诚生产厂家 | 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 菲希尔X射线测厚仪-菲希尔库伦法测厚仪-无锡骏展仪器有限责任公司 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 粉末冶金-粉末冶金齿轮-粉末冶金零件厂家-东莞市正朗精密金属零件有限公司 | 深圳侦探联系方式_深圳小三调查取证公司_深圳小三分离机构 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 |