java贪吃蛇求一个java的贪吃蛇程序(打包),发我

java贪吃蛇  时间:2021-07-10  阅读:()

求贪吃蛇JAVA代码

import?java.awt.Color;?? import?java.awt.Graphics;?? import?java.awt.Graphics2D;?? import?java.awt.Rectangle;?? import?java.awt.event.KeyAdapter;?? import?java.awt.event.KeyEvent;?? import?java.awt.image.BufferedImage;?? import?java.util.ArrayList;?? import?java.util.List;?? import?javax.swing.JFrame;?? public?class?InterFace?extends?JFrame?{?? ????public?static?final?int?WIDTH?=?800,?HEIGHT?=?600,?SLEEPTIME?=?20,?L?=?1,R?=?2,?U?=?3,?D?=?4;?? ????BufferedImage?offersetImage=?new?BufferedImage(WIDTH,?HEIGHT,BufferedImage.TYPE_3BYTE_BGR);;?? ????Rectangle?rect?=?new?Rectangle(20,?40,?15?*?50,?15?*?35);?? ????Snake?snake;?? ????Node?node;?? ????public?InterFace()?{?? ????????snake?=?new?Snake(this);?? ????????createNode();?? ????????this.setBounds(100,?100,?WIDTH,?HEIGHT);?? ????????this.addKeyListener(new?KeyAdapter()?{?? ????????????public?void?keyPressed(KeyEvent?arg0)?{?? ????????????????System.out.println(arg0.getKeyCode());?? ????????????????switch?(arg0.getKeyCode())?{?? ????????????????case?KeyEvent.VK_LEFT:?? ????????????????????snake.dir?=?L;?? ????????????????????break;?? ????????????????case?KeyEvent.VK_RIGHT:?? ????????????????????snake.dir?=?R;?? ????????????????????break;?? ????????????????case?KeyEvent.VK_UP:?? ????????????????????snake.dir?=?U;?? ????????????????????break;?? ????????????????case?KeyEvent.VK_DOWN:?? ????????????????????snake.dir?=?D;?? ????????????????}?? ????????????}?? ????????});?? ????????this.setTitle("贪吃蛇?0.1???By?:?Easy");?? ????????this.setDefaultCloseOperation(EXIT_ON_CLOSE);?? ????????this.setVisible(true);?? ????????new?Thread(new?ThreadUpadte()).start();?? ????}?? ????public?void?paint(Graphics?g)?{?? ????????Graphics2D?g2d?=?(Graphics2D)?offersetImage.getGraphics();?? ????????g2d.setColor(Color.white);?? ????????g2d.fillRect(0,?0,?WIDTH,?HEIGHT);?? ????????g2d.setColor(Color.black);?? ????????g2d.drawRect(rect.x,?rect.y,?rect.width,?rect.height);?? ????????if?(snake.hit(node))?{?? ????????????createNode();?? ????????}?? ????????snake.draw(g2d);?? ????????node.draw(g2d);?? ????????g.drawImage(offersetImage,?0,?0,?null);?? ????}?? ????class?ThreadUpadte?implements?Runnable?{?? ????????public?void?run()?{?? ????????????while?(true)?{?? ????????????????try?{?? ????????????????????Thread.sleep(SLEEPTIME);?? ????????????????????repaint();?? ????????????????}?catch?(InterruptedException?e)?{?? ????????????????????e.printStackTrace();?? ????????????????}?? ????????????}?? ????????}?? ????}?? ????public?void?createNode()?{?? ????????int?x?=?(int)?(Math.random()?*?650)?+?50,y?=?(int)?(Math.random()?*?500)?+?50;?? ????????Color?color?=?Color.blue;?? ????????node?=?new?Node(x,?y,?color);?? ????}?? ????public?static?void?main(String?args[])?{?? ????????new?InterFace();?? ????}?? }?? class?Node?{?? ????int?x,?y,?width?=?15,?height?=?15;?? ????Color?color;?? ????public?Node(int?x,?int?y,?Color?color)?{?? ????????this(x,?y);?? ????????this.color?=?color;?? ????}?? ????public?Node(int?x,?int?y)?{?? ????????this.x?=?x;?? ????????this.y?=?y;?? ????????this.color?=?color.black;?? ????}?? ????public?void?draw(Graphics2D?g2d)?{?? ????????g2d.setColor(color);?? ????????g2d.drawRect(x,?y,?width,?height);?? ????}?? ????public?Rectangle?getRect()?{?? ????????return?new?Rectangle(x,?y,?width,?height);?? ????}?? }?? class?Snake?{?? ????public?List<Node>?nodes?=?new?ArrayList<Node>();?? ????InterFace?interFace;?? ????int?dir=InterFace.R;?? ????public?Snake(InterFace?interFace)?{?? ????????this.interFace?=?interFace;?? ????????nodes.add(new?Node(20?+?150,?40?+?150));?? ????????addNode();?? ????}?? ????public?boolean?hit(Node?node)?{?? ????????for?(int?i?=?0;?i?<?nodes.size();?i++)?{?? ????????????if?(nodes.get(i).getRect().intersects(node.getRect()))?{?? ????????????????addNode();?? ????????????????return?true;?? ????????????}?? ????????}?? ????????return?false;?? ????}?? ????public?void?draw(Graphics2D?g2d)?{?? ????????for?(int?i?=?0;?i?<?nodes.size();?i++)?{?? ????????????nodes.get(i).draw(g2d);?? ????????}?? ????????move();?? ????}?? ????public?void?move()?{?? ????????nodes.remove((nodes.size()?-?1));?? ????????addNode();?? ????}?? ????public?synchronized?void?addNode()?{?? ????????Node?nodeTempNode?=?nodes.get(0);?? ????????switch?(dir)?{?? ????????case?InterFace.L:?? ????????????if?(nodeTempNode.x?<=?20)?{?? ????????????????nodeTempNode?=?new?Node(20?+?15?*?50,?nodeTempNode.y);?? ????????????}?? ????????????nodes.add(0,?new?Node(nodeTempNode.x?-?nodeTempNode.width,?? ????????????????????nodeTempNode.y));?? ????????????break;?? ????????case?InterFace.R:?? ????????????if?(nodeTempNode.x?>=?20?+?15?*?50?-?nodeTempNode.width)?{?? ????????????????nodeTempNode?=?new?Node(20?-?nodeTempNode.width,?nodeTempNode.y);?? ????????????}?? ????????????nodes.add(0,?new?Node(nodeTempNode.x?+?nodeTempNode.width,?? ????????????????????nodeTempNode.y));?? ????????????break;?? ????????case?InterFace.U:?? ????????????if?(nodeTempNode.y?<=?40)?{?? ????????????????nodeTempNode?=?new?Node(nodeTempNode.x,?40?+?15?*?35);?? ????????????}?? ????????????nodes.add(0,?new?Node(nodeTempNode.x,?nodeTempNode.y?-?nodeTempNode.height));?? ????????????break;?? ????????case?InterFace.D:?? ????????????if?(nodeTempNode.y?>=?40?+?15?*?35?-?nodeTempNode.height)?{?? ????????????????nodeTempNode?=?new?Node(nodeTempNode.x,40?-?nodeTempNode.height);?? ????????????}?? ????????????nodes.add(0,?new?Node(nodeTempNode.x,?nodeTempNode.y?+?nodeTempNode.height));?? ????????????break;?? ????????}?? ????}?? }

用Java语言写一个约1500行代码的贪吃蛇游戏

Runnable } if (i.util.Date.start();args) { Thread new Thread(new Thread1());0;one = new Thread(new Thread2()).printStackTrace(); public if (i % one.start(); two;class Thread2 Thread implements class Thread1 { while(true){ i++; System.out.println(new i = run() { while (true) { two = Date().toLocaleString()); } catch try { Thread.sleep(10000);Runnable { break; } } } } import java;Client { public static void main(String[] ); public void run() } } } }<pre t="code" l="java">public class 4 == 0) { System.out.println(;*******<pre t="code" l="java">public implements { private int (InterruptedException e) { e;{ public void 100)nbsp

求一个java的贪吃蛇程序(打包),发我

.tarena.elts.test; import java.awt.Color; import java.awt.Font; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Random; import java.util.Set; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class WormFrame extends JFrame{ private static final long serialVersionUID = 1L; public static final int UP = -10; public static final int DOWN = 10; public static final int LEFT = -200; public static final int RIGHT = 200; private int speed = 200;//蛇的移动速度,越小越快 private JPanel jPanel=null;//游戏面板 private JLabel jLabel=null;//显示游戏结束的标签 private JButton reset = null;//从新开始游戏的按钮 private JButton control = null;//控制方向的按钮 private List worm = new ArrayList();//贪吃蛇 //将整个面板划分成节点,蛇走到那里,就那整个节点点亮 private Map nodes = new HashMap(); private int dir= LEFT;//方向 private Point food;//食物 private boolean isContinue=false;//判断蛇是否行动的标记 public static void main(String[] args) { new WormFrame(); } public WormFrame() { initialize(); start(); } //游戏初始化 private void initialize() { this.setSize(500, 500); this.setLocation(250, 100); this.setResizable(false); this.add(getJPanel());//添加面板 this.setTitle("贪吃蛇,空格键暂停,回车开始"); this.setVisible(true); } //游戏开始 private void start() { isContinue = true; while (true) { while (isContinue) { try { Point p = worm.get(0); int x = (int) p.getX() + dir / 20; int y = (int) p.getY() + dir % 100; if (food.equals(new Point(x, y))) { worm.add(0, food); if(worm.size()%1==0){ speed-=10; } getFood(); continue; } p = new Point(x, y); if(worm.contains(p)){ throw new Exception(); } nodes.get(p).setVisible(false); worm.add(0, p); nodes.get(worm.remove(worm.size() - 1)).setVisible(true); Thread.sleep(speed); } catch (Exception e) { jLabel.setVisible(true); reset.setVisible(true); //不停止内循环,jLabel和reset不消失 isContinue = false; } } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } //游戏从新开始 private void reset(){ worm = new ArrayList(); for(Point p :nodes.keySet()){ nodes.get(p).setVisible(false); } addWorm(); dir = LEFT; getFood(); isContinue =true; } //获取游戏面板的方法,面板中有记录游戏时间的标签, //代表游戏角色的按钮和 重新开始游戏的按钮 private JPanel getJPanel() { if (jPanel == null) { //显示游戏结束的标签 getOver(); //从新开始的按钮 getReset(); //控制按钮 getControl(); //游戏面板 jPanel = new JPanel(); jPanel.setLayout(null);//设置面板布局为空 //jPanel.setForeground(new Color(255,255,255));//设置面板前景色 jPanel.setBackground(new Color(0,0,0));//设置面板背景色 jPanel.add(jLabel,null);//面板中添加 显示游戏结束的标签 jPanel.add(reset,null);//面板中添加 从新开始 的按钮 jPanel.add(control,null); for(int i = 0;i<490;i+=10){ for (int j = 0; j < 470; j+=10) { JButton jb = new JButton(); Point p = new Point(i,j); jb.setBounds(i,j, 10, 10); jb.setBackground(new Color(255,255,255)); jb.setEnabled(false); //jb.setVisible(true); nodes.put(p, jb); jPanel.add(jb,null); } } addWorm();//添加一条蛇 getFood();//食物按钮 jPanel.setVisible(true);//设置面板可见 } return jPanel; } //游戏结束标签 private void getOver() { jLabel = new JLabel(); jLabel.setBounds(170, 200, 200, 50);//设置标签大小和位置 jLabel.setFont(new Font("Dialog", Font.BOLD, 24));//设置标签字体 jLabel.setForeground(new Color(250, 2, 2));//设置标签前景颜色 jLabel.setText(" 游戏结束"); jLabel.setEnabled(true);//设置此标签可用 jLabel.setVisible(false);//设置此标签不可见 } //从新开始按钮 private void getReset() { if (reset == null) { reset = new JButton();//新建一个按钮 reset.setBounds(170, 300, 164, 51);//设置按钮的大小 reset.setText("重新开始");//设置按钮的内容 reset.setVisible(false);//设置按钮不可见 //添加按钮的时间监听器 reset.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { reset.setVisible(false);// 点击重新开始按钮后,按钮消失 jLabel.setVisible(false);// 记录游戏时间的按钮也消失 try { Thread.sleep(1000); } catch (InterruptedException e1) { e1.printStackTrace(); } reset(); } }); } } //控制方向的按钮 private void getControl(){ if(control == null){ control = new JButton(); control.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { switch(e.getKeyCode()){ case KeyEvent.VK_LEFT :chDir(LEFT);break; case KeyEvent.VK_RIGHT :chDir(RIGHT);break; case KeyEvent.VK_UP :chDir(UP);break; case KeyEvent.VK_DOWN :chDir(DOWN);break; case KeyEvent.VK_ENTER:isContinue = true;break; case KeyEvent.VK_SPACE:isContinue = false;break; } } }); } } //生成食物 private void getFood(){ Random ran = new Random(); //横坐标最大480,纵坐标最大460 int x = ran.nextInt(49)*10; int y = ran.nextInt(47)*10; food = new Point(x,y); Set set = new HashSet(worm); while(set.contains(food)){ x = ran.nextInt(50)*10; y = ran.nextInt(50)*10; food = new Point(x,y); } nodes.get(food).setVisible(false); } //改变方向 private void chDir(int dir){ if(this.dir+dir!=0){ this.dir = dir; } } //添加Worm的方法 private void addWorm(){ for(int i = 250;i<300;i+=10){ Point p = new Point(i,250); worm.add(p); nodes.get(p).setVisible(true); } } } //给分

易探云:香港大带宽/大内存物理机服务器550元;20Mbps带宽!三网BGP线路

易探云怎么样?易探云隶属于纯乐电商旗下网络服务品牌,香港NTT Communications合作伙伴,YiTanCloud Limited旗下合作云计算品牌,数十年云计算行业经验。发展至今,我们已凝聚起港内领先的开发和运维团队,积累起4年市场服务经验,提供电话热线/在线咨询/服务单系统等多种沟通渠道,7*24不间断服务,3分钟快速响应。目前,易探云提供香港大带宽20Mbps、16G DDR3内存、...

华纳云E5处理器16G内存100Mbps688元/月

近日华纳云商家正式上线了美国服务器产品,这次美国机房上线的产品包括美国云服务器、美国独立服务器、美国高防御服务器以及美国高防云服务器等产品,新产品上线华纳云推出了史上优惠力度最高的特价优惠活动,美国云服务器低至3折,1核心1G内存5Mbps带宽低至24元/月,20G ddos高防御服务器低至688元/月,年付周期再送2个月、两年送4个月、三年送6个月,终身续费同价,有需要的朋友可以关注一下。华纳云...

wordpress外贸企业主题 wordpress经典外贸企业建站主题

WordPress经典外贸企业建站主题,经典配色扁平化简约设计+跨屏自适应移动端设备,特色外贸企业建站功能模块+在线Inquiry询单功能,更有利于Google等英文搜索优化和站点收录。采用标准的HTML5+CSS3语言开发,兼容当下的各种主流浏览器: IE 6+(以及类似360、遨游等基于IE内核的)、Firefox、Google Chrome、Safari、Opera等;同时支持移动终端的常用...

java贪吃蛇为你推荐
xclientxclient校园网的客户端一直显示查找设备的原因?????急急急,好多天不能上网了···········显卡挖矿啥意思请问显卡爱好者口中常挂的“挖矿”是什么意思?鲁大师中的显卡挖矿指数又是什么意思?求科普!空白代码html空格代码怎么写rdlcordless phone是什么意思电子日历怎样调整电子日历上的时间tvosTVOS推广怎么样?arc是什么意思arcsin中arc是什么的缩写? 怎么读? ?inode智能客户端win7如何使用校园网iNode智能客户端spawning为什么编译和运行vc++ 时会出现Error spawning c1.exe 的错误欢迎页面怎样取消“欢迎页面”?
域名空间 万网域名解析 net主机 海外服务器 京东商城双十一活动 小米数据库 dux 宁波服务器 服务器干什么用的 1美金 新世界服务器 帽子云排名 湖南idc 注册阿里云邮箱 万网主机 测速电信 腾讯网盘 后门 magento主机 asp简介 更多