JAVA小游戏华容道软件设计报告.docx

上传人:b****6 文档编号:6677277 上传时间:2023-01-08 格式:DOCX 页数:11 大小:111.62KB
下载 相关 举报
JAVA小游戏华容道软件设计报告.docx_第1页
第1页 / 共11页
JAVA小游戏华容道软件设计报告.docx_第2页
第2页 / 共11页
JAVA小游戏华容道软件设计报告.docx_第3页
第3页 / 共11页
JAVA小游戏华容道软件设计报告.docx_第4页
第4页 / 共11页
JAVA小游戏华容道软件设计报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

JAVA小游戏华容道软件设计报告.docx

《JAVA小游戏华容道软件设计报告.docx》由会员分享,可在线阅读,更多相关《JAVA小游戏华容道软件设计报告.docx(11页珍藏版)》请在冰豆网上搜索。

JAVA小游戏华容道软件设计报告.docx

JAVA小游戏华容道软件设计报告

命题方式:

单独命题

佛山科学技术学院2013—2014学年第二学期

《可视化编程技术》课程期末考试试题A

专业、班级:

12教技2班姓名:

何颖康学号:

**********成绩:

 

根据《可视化编程技术》这门课程的内容,结合自己熟悉的课题及自己的实际情况来自选设计题目,也可以选择老师提供的参考题目设计。

1.参考设计题目

1)电子钟;2)简单计算器;3)五子棋;4)微波炉倒计时部件

2.上交文本格式(参考设计报告模板)

(1)标题;

(2)班级、姓名、学号;

(3)摘要

(4)关键词;

(5),正文;

(6)参考文献;

(7)设计总结(自己所做的主要工作与体会)

3.作品必须有一个自己独立完成的模块,按照功能多少及强度评分。

4.上交作品两项

(1)课程设计报告电子完整版(含程序),统一放入班级光盘中;

(2)考试作品(从设计报告中整理5-6页+本封面)用A4白纸打印。

进行接新

佛山科学技术学院

《可视化编程技术》课程设计报告

 

JAVA小游戏“华容道”设计

 

*******

学号:

**********

年级专业:

12级教育技术学2班

*******

学院:

教育科学学院

 

广东★佛山

提交日期:

2014年6月

摘要:

本程序根据手机游戏“智力大爆炸”为原版,加入历史元素,将娱乐、学习和思考集于一体。

程序执行后,点击相应的人物,然后按上下左右键可以移动。

点击重新开始按钮,可以将各个人物的位置重置。

如果目的地的面积能够容得下当前要移动的人物,则认为可以移动。

当曹操移动到“曹操到达该位置”的位置的时候,认为程序结束。

关键字:

java小游戏,华容道,益智,历史元素,曹操移动

前言

随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。

文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的计算器,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要。

Java是由Sun公司开发的新一代纯面向对象的网络编程语言。

其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。

正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。

Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。

Java基本版本叫Java2标准版(Java2StandardEdition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。

Java2移动版(TheJava2MobileEdition,J2ME)包含创建无线Java应用程序的API。

还有Java2企业版(TheJava2Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。

Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。

作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。

Java语言去掉了C++语言的一些容易引起错误的特性。

Java语言的特点有:

面向对象、跨平台、安全性、多线程和图形功能强。

 

详细设计

(1)编程思路:

因为首先要实现华容道游戏的整体功能,所以首先生成游戏中的主人公:

要生成游戏中的十个人物,就要用到人物类People,首先通过语句Peoplepeople[]=newPeople[10]定义一个可以存放十个变量的数组,再通过people[0]=newPeople(0,"曹操",104,54,100,100,this)等九话生成十个人物,最后通过people[9].requestFocus()

设置焦点。

然后,因为要设置华容道的界面信息,所以用到了Graphics类,首先通过语句g.setColor(Color.cyan)来设置要使用的颜色,然后通过g.fillRect()分别设置了左右上下四部分边界的填充颜色,最后通过g.drawString()函数写出提示曹操逃出位置和按键规则给用户参考。

最后,因为要实现人机交互的效果,所以要响应键盘事件,这一操作是在函数publicvoidkeyPressed(KeyEvente)中完成的:

首先通过语句Peopleman=(People)e.getSource()获取事件源,然后通过语句if(e.getKeyCode()==KeyEvent.VK_DOWN)响应用户按向下光标的操作,通过语句if(e.getKeyCode()==KeyEvent.VK_LEFT)响应用户按向左光标的操作,通过语句if(e.getKeyCode()==KeyEvent.VK_RIGHT)响应用户按向右光标的操作,通过语句if(e.getKeyCode()==KeyEvent.VK_UP)响应用户按向上光标的操作,最后通过函数publicvoidactionPerformed(ActionEvente)将界面所有控件复位,实现重新开始的功能。

测试分析

代码编写完毕,存盘为:

C:

j2sdk1.4.0\javaprograms\HuaRongRoad.java。

打开计算机的命令提示符窗口,然后在命令提示符窗口中,定位到javaprograms目录,输入javacHuaRongRoad.java来编译程序,最后将程序加载到网页上。

在javaprograms文件夹下新建一个记事本文件,内容为

,然后保存为HuaRongRoad.html的网页文件。

本例制作完毕,用浏览器打开HuaRongRoad.html文件便可以看到制作效果。

程序清单:

//HuaRongRoad.java

importjava.awt.*;

importjava.applet.*;

importjava.awt.event.*;

classPeopleextendsButtonimplementsFocusListener//代表华容道人物的类

{

Rectanglerect=null;

intleft_x,left_y;//按扭的左上角坐标

intwidth,height;//按扭的宽和高

Stringname;

intnumber;

People(intnumber,Strings,intx,inty,intw,inth,HuaRongRoadroad)

{

super(s);

name=s;

this.number=number;

left_x=x;left_y=y;

width=w;height=h;

setBackground(Color.orange);

road.add(this);

addKeyListener(road);

setBounds(x,y,w,h);

addFocusListener(this);

rect=newRectangle(x,y,w,h);

}

publicvoidfocusGained(FocusEvente)

{

setBackground(Color.red);

}

publicvoidfocusLost(FocusEvente)

{

setBackground(Color.orange);

}

}

publicclassHuaRongRoadextendsApplet

implementsKeyListener,ActionListener

{

Peoplepeople[]=newPeople[10];

Rectangleleft,right,above,below;//华容道的边界

Buttonrestart=newButton("重新开始");

publicvoidinit()

{

setLayout(null);

restart.setBackground(Color.yellow);

add(restart);

restart.setBounds(5,5,80,25);

restart.addActionListener(this);

people[0]=newPeople(0,"曹操",104,54,100,100,this);

people[1]=newPeople(1,"关羽",104,154,100,50,this);

people[2]=newPeople(2,"张飞",54,154,50,100,this);

people[3]=newPeople(3,"刘备",204,154,50,100,this);

people[4]=newPeople(4,"张辽",54,54,50,100,this);

people[5]=newPeople(5,"曹仁",204,54,50,100,this);

people[6]=newPeople(6,"兵",54,254,50,50,this);

people[7]=newPeople(7,"兵",204,254,50,50,this);

people[8]=newPeople(8,"兵",104,204,50,50,this);

people[9]=newPeople(9,"兵",154,204,50,50,this);

people[9].requestFocus();

left=newRectangle(49,49,5,260);

people[0].setForeground(Color.white);

right=newRectangle(254,49,5,260);

above=newRectangle(49,49,210,5);

below=newRectangle(49,304,210,5);

}

publicvoidpaint(Graphicsg)

{

//画出华容道的边界

g.setColor(Color.cyan);

g.fillRect(49,49,5,260);//left

g.fillRect(254,49,5,260);//right

g.fillRect(49,49,210,5);//above

g.fillRect(49,304,210,5);//below

//提示曹操逃出位置和按键规则

g.setColor(Color.blue);

g.drawString("点击相应的人物,然后按键盘上的上下左右箭头移动",100,20);

g.setColor(Color.red);

g.drawString("曹操到达该位置",110,300);

}

publicvoidkeyPressed(KeyEvente)

{

Peopleman=(People)e.getSource();//获取事件源

man.rect.setLocation(man.getBounds().x,man.getBounds().y);

if(e.getKeyCode()==KeyEvent.VK_DOWN)

{

man.left_y=man.left_y+50;//向下前进50个单位

man.setLocation(man.left_x,man.left_y);

man.rect.setLocation(man.left_x,man.left_y);

//判断是否和其它人物或下边界出现重叠,如果出现重叠就退回50个单位距离

for(inti=0;i<10;i++)

{

if((man.rect.intersects(people[i].rect))&&(man.number!

=i))

{

man.left_y=man.left_y-50;

man.setLocation(man.left_x,man.left_y);

man.rect.setLocation(man.left_x,man.left_y);

}

}

if(man.rect.intersects(below))

{

man.left_y=man.left_y-50;

man.setLocation(man.left_x,man.left_y);

man.rect.setLocation(man.left_x,man.left_y);

}

}

if(e.getKeyCode()==KeyEvent.VK_UP)

{

man.left_y=man.left_y-50;//向上前进50个单位

man.setLocation(man.left_x,man.left_y);

man.rect.setLocation(man.left_x,man.left_y);

//判断是否和其它人物或上边界出现重叠,如果出现重叠就退回50个单位距离

for(inti=0;i<10;i++)

{

if((man.rect.intersects(people[i].rect))&&(man.number!

=i))

{

man.left_y=man.left_y+50;

man.setLocation(man.left_x,man.left_y);

man.rect.setLocation(man.left_x,man.left_y);

}

}

if(man.rect.intersects(above))

{

man.left_y=man.left_y+50;

man.setLocation(man.left_x,man.left_y);

man.rect.setLocation(man.left_x,man.left_y);

}

}

if(e.getKeyCode()==KeyEvent.VK_LEFT)

{

man.left_x=man.left_x-50;//向左前进50个单位

man.setLocation(man.left_x,man.left_y);

man.rect.setLocation(man.left_x,man.left_y);

//判断是否和其它人物或左边界出现重叠,如果出现重叠就退回50个单位距离

for(inti=0;i<10;i++)

{

if((man.rect.intersects(people[i].rect))&&(man.number!

=i))

{

man.left_x=man.left_x+50;

man.setLocation(man.left_x,man.left_y);

man.rect.setLocation(man.left_x,man.left_y);

}

}

if(man.rect.intersects(left))

{

man.left_x=man.left_x+50;

man.setLocation(man.left_x,man.left_y);

man.rect.setLocation(man.left_x,man.left_y);

}

}

if(e.getKeyCode()==KeyEvent.VK_RIGHT)

{

man.left_x=man.left_x+50;//向右前进50个单位

man.setLocation(man.left_x,man.left_y);

man.rect.setLocation(man.left_x,man.left_y);

//判断是否和其它人物或右边界出现重叠,如果出现重叠就退回50个单位距离

for(inti=0;i<10;i++)

{

if((man.rect.intersects(people[i].rect))&&(man.number!

=i))

{

man.left_x=man.left_x-50;

man.setLocation(man.left_x,man.left_y);

man.rect.setLocation(man.left_x,man.left_y);

}

}

if(man.rect.intersects(right))

{

man.left_x=man.left_x-50;

man.setLocation(man.left_x,man.left_y);

man.rect.setLocation(man.left_x,man.left_y);

}

}

}

publicvoidkeyTyped(KeyEvente){}

publicvoidkeyReleased(KeyEvente){}

publicvoidactionPerformed(ActionEvente)

{

this.removeAll();

this.init();

}

}

参考文献

林良信《JavaJDK6学习笔记》

刘浦迎谢春《java程序设计实用教程》科学出版社

张白一崔尚林《面向对象程序设计—java》西安电子科技大学出版社

潘浩李芙玲《Java程序设计》清华大学出版社

设计总结(自己所做的主要工作与体会)

经过一个学期的JAVA学习,对JAVA编程有了一定的认识,JAVA是一门很有趣的课程,虽然在编辑程序的时候比较有难度,但是当把程序写出来的时候,心理的满足感是无法形容的。

但是我的语言基本功比较差,所以做起来比较吃力,通过请教老师和同学,终于把我想要的程序写出来,这段时间可以说是最充实又吃力的一段时间。

通过这次实训我的体会归纳为以下4点:

1.态度第一,摆正自己的心态,不要以为什么东西上网搜搜就可以了,一定要有自己的东西。

只有自己付出过,当程序运行成功时的那种喜悦才会令自己有一种莫名的自豪感。

态度决定一切!

2.兴趣是关键,因为有兴趣,所以才会很想充分理解一切细节。

又因为理解,所以许多原本片片断断的知识都可以渐渐互相融会贯通,累积技术能量,理论和实务之间的藩篱被打破了,学习效率倍增。

学习并快乐着!

3.敢于挑战,不安于现成的程序,要敢于用多种方法实现一个目的。

现在的网络科技很发达,想要一个源程序的确很简单,所以很多人都是在自己都不明白题目要求时,就可以在网上搜到一模一样的代码,根本没有自己的东西。

挑战自我是项艰巨的任务。

只有坚持自己多看代码多写程序才会有更多的收获。

4.不懈追求,要对源代码进行不断地完善,要尽可能地实现课题所要求的功能。

对初学者来说,大量地写程序是必要的,但过了某个阶段之后,写程序所带来的技术能力成长已经到了极限,还不如多花一点时间看书,学新技术和新观念。

可以从实现源程序功能着手,比如添加写模块啊什么的,实现更多功能。

看着自己编的程序能成功运行,这样自己会更感兴趣,也就会乐此不疲。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1