你的位置:首页 > 软件开发 > Java > 数据结构大作业

数据结构大作业

发布时间:2017-04-28 00:01:24
这次数据结构课程我的大作业选择的是贪吃蛇,最初我想了很久到底用什么语言来写贪吃蛇,最后想到java实现图形界面是最方便的,因为JDK里已经有AWT和SWING两个类可以实现图形界面,C语言我会用一个叫easyX的图形库,但是我感觉这个图形库用起来挺麻烦的,c++的话,我还不会用Q ...

数据结构大作业

  这次数据结构课程我的大作业选择的是贪吃蛇,最初我想了很久到底用什么语言来写贪吃蛇,最后想到java实现图形界面是最方便的,因为JDK里已经有AWT和SWING两个类可以实现图形界面,C语言我会用一个叫easyX的图形库,但是我感觉这个图形库用起来挺麻烦的,c++的话,我还不会用QT,MFC,之类的。这个课程供我们选择的就只有这三门语言,最后我选择了java。

  由于我是这学期刚学的java,而且一个星期只有一节java课,一共只学了只有七八周的样子,所以java学的不怎么精,对有些类的理解其实我的理解是错误的,所以,请各位路过的大佬轻喷。 

  我的想法是先在主函数所在的类建立一个容器JFrame,再建立一个snakePanel类继承JPanel类,通过重写父类的paint()函数来实现整个界面,再通过不停地repaint()来实现图形的变动。

  在snakePanel中首先我要自己把各种坐标量好,然后我定义了snakeX和snakeY两个整型数组变量,用来控制蛇的位置,然后我疯狂的在网上找图片,最坑的是蛇头,你们想想,蛇头有四个方向,也就是要找四张图片,还有背景图片,还有蛇身等等,我找图片就在学校图书管找了一个下午。

  我又定义了一个lenth变量,每次repaint时通过for循环画lenth-1次蛇身,每次lenth+1就实现了蛇身的增长,还有就是食物,我通过了math类派生出的Rand类随机出食物的X坐标和Y坐标然后paint,当食物的XY坐标和蛇头的XY坐标重合时就吃到了食物,食物此时就重新随机。游戏的失败判定和食物的判定类似,我每次通过一个for循环遍历蛇身,如果蛇身和蛇头重合则游戏失败(我并未设定蛇碰到墙就死的设定)。

  最后就是如何动起来的事,我定义了一个IsLive的布尔变量,当蛇存活时未true,蛇死时为false,我全部关于动作的内容全部写在了一个while(isLive)的循环中,中间调用了Sleep函数来实现控制速度。

以上就是我的全部思路。

 

具体代码如下:

主类snake:

 1 package snake; 2  3 import java.awt.*; 4  5 import javax.swing.*; 6  7 public class Snake extends Thread{ 8   public static void main(String[] args) { 9     //主面板10     JFrame frame = new JFrame("贪食蛇游戏");11     frame.setBounds(10, 10, 900, 720);12     frame.setResizable(false);13     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);14     15     Snakepanel panel = new Snakepanel();16     frame.add(panel);17     18     19     20     21     22     //计分板23     JFrame score = new JFrame("计分板");24     score.setBounds(980, 10, 256, 180);25     score.setResizable(false);26     27     28     ScorePanel sp = new ScorePanel();29     sp.label2.setText(String.valueOf(panel.lenth-3));30     score.add(sp);31     sp.tr.start();32     33     score.setVisible(true);34     frame.setVisible(true);35     36     OverFrame of = new OverFrame();37     38   }39   40 }

原标题:数据结构大作业

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录