烟台工程职业技术
系专业级
课程设计(论文)课程设计(论文)设计
题
目:贪吃蛇
指导教师(签名)指导教师(签名)
二○一一年七月十五日
贪吃蛇
摘要:本文采用J2EE实现大家耳熟能详的一个贪吃蛇游戏来综合运用所学知识,本游戏运用
Java的面向对象思想、封装类、接口等概念,来完成本游戏,达到综合运用所学知识的目的。1.JAVA开发环境:JDK1.6+Eclipse2.开发语言:J2EE
前言
贪吃蛇游戏背景:蛇引诱夏娃吃了苹果后,就被贬为毒虫,阴险的象征。而蛇吃东西是整只动物吞进去的,大概在文艺复兴的时候就有人发明的一种游戏,是现在贪吃蛇的前身。后来慢慢的发展就变成了今天的贪吃蛇,现在的贪吃蛇主要应用于手机游戏。本文运用Java面向对象编程、类的封装、抽象类的使用(接口),循序渐进实现贪吃蛇的相关功能。
设计题目:一.设计题目:《贪吃蛇》需求分析:二.需求分析:现在的人都很无聊,看一些小游戏可以娱乐心智,开阔视野,详细设计:三.详细设计:1.设计GreedSnake类,他们有keyPressed(KeyEvente)方法,按下键盘方向键,GreedSnake类可以生成随即位置,开始时按下begin按钮,如下:
2.按下begin后,再按下tab键,开始。用键盘的上下左右来控制。
3.当游戏玩到15关的时候,win!
四.总结通过这一周的课程设计,我觉得以前上课时很零散的知识现在能够串起来,平时虽然一个周就四节课,每次学得也不是很多,但是通过这次做课设,我发现综合起来,那些知识是能用上的。
学习任何知识,如果只学理论,而不去实践、探索是不够的,所以要经常去
实践,只有这样才可能把事情做好。不管做什么,都要有思路,不能盲目的做。只有确定了方向跟目标,认真想想,再努力做,什么事都能解决的。最后,感谢陈娅冰老师的指点跟讲评,通过做贪吃蛇,我学到了很多书本上没有的知识。五.附录:附录:importjava.awt.*;importjava.awt.event.*;publicclassGreedSnake//主类{
/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubnewMyWindow();}}classMyPanelextendsPanelimplementsKeyListener,Runnable//自定义面板类,继承了键盘和线程接口{Buttonsnake[];//定义蛇按钮intshu=0;//蛇的节数intfood[];//食物数组booleanresult=true;//判定结果是输还是赢Threadthread;//定义线程staticintweix,weiy;//食物位置booleant=true;//判定游戏是否结束intfangxiang=0;//蛇移动方向intx=0,y=0;//蛇头位置MyPanel()
{setLayout(null);snake=newButton[20];food=newint[20];thread=newThread(this);for(intj=0;j<20;j++){food[j]=(int)(Math.random()*99);//定义20个随机食物}weix=(int)(food[0]*0.1)*60;//十位*60为横坐标weiy=(int)(food[0]%10)*40;//个位*40为纵坐标for(inti=0;i<20;i++){snake[i]=newButton();}add(snake[0]);snake[0].setBackground(Color.black);snake[0].addKeyListener(this);//为蛇头添加键盘监视器snake[0].setBounds(0,0,10,10);setBackground(Color.cyan);}publicvoidrun()//接收线程{while(t){if(fangxiang==0)//向右{try{x+=10;snake[0].setLocation(x,y);//设置蛇头位置
if(x==weix&;&;y==weiy)//吃到食物{shu++;weix=(int)(food[shu]*0.1)*60;weiy=(int)(food[shu]%10)*40;repaint();//重绘下一个食物add(snake[shu]);//增加蛇节数和位置snake[shu].setBounds(snake[shu-1].getBounds());}thread.sleep(100);//睡眠100ms}catch(Exceptione){}}elseif(fangxiang==1)//向左{try{x-=10;snake[0].setLocation(x,y);if(x==weix&;&;y==weiy){shu++;weix=(int)(food[shu]*0.1)*60;weiy=(int)(food[shu]%10)*40;repaint();add(snake[shu]);snake[shu].setBounds(snake[shu-1].getBounds());}thread.sleep(100);