`

java 贪吃蛇程序

阅读更多


公司的一个同事,关系不错,一起搞了一个java的贪吃蛇程序,公司之余的闲弄。
java 代码
 
  1. /* 
  2. 窗体显示 
  3.  
  4. */  
  5. class MyFrame extends JFrame  
  6. {  
  7. public MyFrame()  
  8. {  
  9. setSize(width,height);  
  10. setTitle("snake");  
  11. MyPanel p = new MyPanel();  
  12. add(p);  
  13. setLocation(200,180);  
  14. //System.out.println(getBackground());  
  15. }  
  16. private int width = 500;  
  17. private int height = 430;  
  18. }  
  19.   
  20. /* 
  21. 测试程序 
  22. */  
  23.   
  24. public class Snake  
  25. {  
  26. public static void main(String[] args)  
  27. {  
  28. MyFrame frame = new MyFrame();  
  29. frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);  
  30. frame.setVisible(true);  
  31. }  
  32. }  
  33.   
  34.   
  35.   
  36.   
  37.   
  38.   
  39.   
  40.   
  41. /*主要功能程序*/  
  42.   
  43. import javax.swing.*;  
  44. import java.awt.*;  
  45. import javax.swing.Timer;  
  46. import java.awt.event.*;  
  47. import java.util.*;  
  48. import java.awt.geom.*;  
  49. class MyPanel extends JPanel  
  50. {  
  51. public MyPanel()  
  52. {  
  53. clock.start();  
  54. snake.add(new Rectangle2D.Double(x,y,8,8));  
  55. snake.add(new Rectangle2D.Double(x + 10,y,8,8));  
  56. snake.add(new Rectangle2D.Double(x + 20,y,8,8));  
  57. snake.add(new Rectangle2D.Double(x + 30,y,8,8));  
  58. addKeyListener(new Listener());  
  59. setFocusable(true);  
  60.   
  61. }  
  62. public void paintComponent(Graphics g0)  
  63. {  
  64.   
  65. Graphics2D g = (Graphics2D) g0;  
  66. g0.setColor(backcolor);  
  67. for(Rectangle2D r : snake)  
  68. g.draw(r);  
  69. Move();  
  70. g.fillRect(108,35,50,10);  
  71. g.fillRect(380,35,50,10);  
  72. g0.setColor(frontcolor);  
  73. for(Rectangle2D r : snake)  
  74. g.draw(r);  
  75. //if(flag)  
  76. while(flag)  
  77. {  
  78.   
  79. foodx = (int)Math.round(Math.random()*390)/10*10 + 50;  
  80. foody = (int)Math.round(Math.random()*290)/10*10 + 50;  
  81. for(Rectangle2D r : snake)  
  82. if(r.getX() == foodx && r.getY() == foody) continue;  
  83. g.draw(new Rectangle2D.Double(foodx,foody,8,8));  
  84. flag = false;  
  85. }  
  86. g.drawRect(48,48,404,304);  
  87. g.drawString("Score "+String.valueOf(score),70,45);  
  88. g.drawString(String.valueOf(time),380,45);  
  89. if(delay == 0) delay = 1;  
  90. else delay = 0;  
  91. if(time > 0 && delay == 1) time--;  
  92.   
  93. }  
  94. public void Move()  
  95. {  
  96. if(direction == 0) x += 10//right  
  97. else if(direction == 1) y += 10//down  
  98. else if(direction == 2) x -= 10//left  
  99. else if(direction == 3) y -= 10//up  
  100. if(GameOver()) clock.stop();  
  101. if(x == foodx && y == foody)  
  102. {  
  103. snake.add(new Rectangle2D.Double(foodx,foody,8,8));  
  104. flag = true;  
  105. num++;  
  106. score += time;  
  107. time = 20;  
  108. }  
  109. for(int i=num;i>0;i--)  
  110. snake.set(i,snake.get(i - 1));  
  111. snake.set(0,new Rectangle2D.Double(x,y,8,8));  
  112.   
  113. }  
  114. public boolean GameOver()  
  115. {  
  116. if(x<50 || x>440 || y<50 || y>340return true;  
  117. else return false;  
  118. }  
  119.   
  120. class MyListener implements ActionListener  
  121. {  
  122. public void actionPerformed(ActionEvent e)  
  123. {  
  124. repaint();  
  125. }  
  126. }  
  127. class Listener implements KeyListener  
  128. {  
  129. public void keyTyped(KeyEvent e)  
  130. {  
  131. }  
  132.   
  133. public void keyPressed(KeyEvent e)  
  134. {  
  135. int key = e.getKeyCode(); // getKeyCode()  
  136. if(key == e.VK_RIGHT && direction != 2) direction = 0//right  
  137. else if(key == e.VK_DOWN && direction != 3) direction = 1//down  
  138. else if(key == e.VK_LEFT && direction != 0) direction = 2//left  
  139. else if(key == e.VK_UP && direction != 1) direction = 3//up  
  140. }  
  141.   
  142. public void keyReleased(KeyEvent e)  
  143. {  
  144. }  
  145. }  
  146.   
  147. private int foodx;  
  148. private int foody;  
  149. private int x = 70;  
  150. private int y = 100;  
  151. private int num = 3;  
  152. private int delay =0;  
  153. private int score = 0;  
  154. private int time = 20;  
  155. private int direction = 0;  
  156. private boolean flag = true;  
  157. private Color frontcolor = new Color(51,51,51);  
  158. private Color backcolor = new Color(238,238,238);  
  159. private Timer clock = new Timer(300,new MyListener());  
  160. private ArrayList<Rectangle2D> snake = new ArrayList<Rectangle2D>();  
  161.   
  162.   
  163. }  
分享到:
评论

相关推荐

    java贪吃蛇程序(比较简单)

    【标题】"Java贪吃蛇程序(比较简单)"是一个基于Java编程语言实现的简单游戏项目。这个程序展示了如何使用基本的编程概念和技术来创建一个经典的贪吃蛇游戏,适合初学者理解和学习。 【描述】提到的"java贪吃蛇...

    java贪吃蛇小游戏程序课程设计.pdf

    Java 贪吃蛇小游戏程序课程设计 Java 贪吃蛇小游戏程序课程设计是基于 Java 语言的游戏开发课程设计,旨在设计和实现一个基本的贪吃蛇小游戏程序。该课程设计的主要目标是通过游戏的设计和实现,提高学生的编程能力...

    JAVA 贪吃蛇程序

    【JAVA 贪吃蛇程序】是一个非常适合初学者学习的JAVA编程项目,它利用了基本的控制台输出和事件处理来实现经典的贪吃蛇游戏。在这个项目中,开发者可以了解到如何在JAVA环境下创建一个交互式的应用程序,特别是使用...

    java 贪吃蛇 程序代码1.0

    通过这个Java贪吃蛇程序,开发者不仅能学习到基础的编程技巧,还能深入理解游戏开发的逻辑和设计思路,提升解决问题的能力。同时,这也是一个不错的练习项目,能够锻炼编程者的耐心和代码组织能力。

    java贪吃蛇程序源码,含GUI图形界面

    Java贪吃蛇程序是一个经典的学习项目,它利用Java Swing库创建了一个GUI图形用户界面,让玩家可以直观地操作游戏。这个程序对初学者来说是个很好的实践案例,因为它涉及到许多基础的编程概念,如事件处理、对象和类...

    Java贪吃蛇程序.docx

    【Java贪吃蛇程序】是基于Java编程语言实现的一个经典游戏。这个程序包含了几个关键类:`Food`、`Ground` 和 `Snake`,每个类都有特定的功能。 1. **Food 类**: - `Food` 类继承自 `Point`,表示贪吃蛇游戏中蛇的...

    Java贪吃蛇程序

    【Java贪吃蛇程序】是一个基于Java编程语言开发的简单游戏项目,主要目的是帮助学习者理解和实践面向对象编程、事件处理以及游戏循环等基础概念。这个程序的核心是通过控制一个不断移动的小蛇来吞噬食物,小蛇每吃掉...

    java贪吃蛇程序

    以上就是用Java编写贪吃蛇程序涉及的主要知识点。在分析提供的压缩包文件名称"SnakeGame.java"时,我们可以推测这是整个游戏的主要源代码文件,包含了游戏逻辑、界面设计和事件处理等功能。通过阅读和理解这段代码,...

    毕业答辩-JAVA贪吃蛇游戏毕业设计(源代码论文).rar

    标题“毕业答辩-JAVA贪吃蛇游戏毕业设计(源代码论文).rar”揭示了这是一个关于JAVA编程语言的项目,具体来说是一个贪吃蛇游戏的毕业设计。这个项目不仅包含了游戏的源代码,还有相关的毕业论文,说明了设计者可能在...

    java 贪吃蛇程序开发

    java 贪吃蛇简易版开发 运用swing多线程 io操作

    简单的Java贪吃蛇程序

    这个程序使用了Swing库实现了一个简单的基于图形界面的贪吃蛇游戏,玩家通过按键控制蛇的移动并试图在不碰到障碍物的情况下尽可能地吃到更多的食物。你可以直接将代码复制到Java编译器中运行。

    Java做的贪吃蛇程序

    通过这个Java贪吃蛇程序,你可以学习到如何使用Java的控制台输入输出、数组、循环、条件语句等基础知识,以及如何组织一个简单的游戏逻辑。同时,它也是实践面向对象编程思想的好例子,你可以将蛇、食物、游戏区域等...

    java贪吃蛇游戏程序设计

    【Java贪吃蛇游戏程序设计】是一个典型的计算机编程项目,主要使用Java语言实现。这个程序设计涉及到了多个关键的编程概念和技术,对于学习和理解Java编程以及游戏开发有着重要的实践意义。下面将详细阐述其中涉及的...

    Java语言编写的贪吃蛇程序

    本文通过对Java贪吃蛇程序中的`SnakeGame`、`Snake`及部分`GameFrame`类的分析,详细介绍了这些类的功能和实现逻辑。通过理解这些代码,开发者可以更好地掌握如何使用Java和Swing来开发简单的游戏应用程序。此外,还...

    JAVA贪吃蛇源码程序

    【JAVA贪吃蛇源码程序】是一个非常适合初学者学习编程逻辑和简单算法的项目。它主要使用了JAVA语言,这是目前广泛应用的面向对象编程语言,以其跨平台、高性能和丰富的库支持而闻名。在这个项目中,开发者利用了JAVA...

    java贪吃蛇项目(含实验报告)

    【标题】"java贪吃蛇项目(含实验报告)"是一个基于Java编程语言实现的典型游戏项目,旨在帮助学生在课程结束时巩固和应用所学的Java知识。这个项目不仅包含了一个完整的贪吃蛇游戏的源代码,还提供了一份详细的实验...

    java贪吃蛇小游戏代码java小游戏源码.zip

    【文件名称列表】:由于提供的信息只有一个总文件名“java贪吃蛇小游戏代码java小游戏源码”,我们可以假设压缩包内包含了多个相关的Java类文件,如Game.java(主程序类)、Snake.java(蛇的类)、Food.java(食物类...

    Java贪吃蛇(关卡功能)

    【Java贪吃蛇游戏开发详解】 贪吃蛇是一款经典的电子游戏,其基本玩法是控制一个不断增长的蛇在有限的区域内移动,通过吃食物来延长自身长度,同时避免撞到自身或边界。在这个Java实现的贪吃蛇项目中,特别加入了...

Global site tag (gtag.js) - Google Analytics