《Java游戏程序设计教程》实验任务书Word下载.docx
- 文档编号:22218958
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:22
- 大小:47.32KB
《Java游戏程序设计教程》实验任务书Word下载.docx
《《Java游戏程序设计教程》实验任务书Word下载.docx》由会员分享,可在线阅读,更多相关《《Java游戏程序设计教程》实验任务书Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
app.add(drawB,BorderLayout.CENTER);
app.pack();
app.setVisible(true);
drawB.gameStart();
}
//绘图面板
publicgamePanel(){
width=500;
heigth=500;
setBackground(Color.pink);
setPreferredSize(newDimension(width,heigth));
myball=newball(this);
mypad=newpad(this);
this.setFocusable(true);
this.requestFocus();
this.addKeyListener(this);
//线程
publicvoidgameStart(){
gamethread=newThread(this);
gamethread.start();
try{
g=this.getGraphics();
if(g!
=null&
&
im!
=null){
g.drawImage(im,0,0,null);
g.dispose();
}catch(Exceptione){
//小球图形绘制
publicvoidgameRender(){
if(im==null){
im=createImage(width,heigth);
System.out.println("
imisnull"
}else{
dbg=im.getGraphics();
dbg.setColor(Color.pink);
dbg.fillRect(0,0,width,heigth);
myball.draw(dbg);
mypad.draw(dbg);
实验二贪食蛇游戏设计
通过设计和制作贪食蛇游戏来理解游戏程序的运行机制,同时学习运用java的事件处理机制来改变游戏状态和传递控制命令。
学习和了解贪食蛇游戏的基本设计思想(参考教材4.4节内容及相关代码),在此基础上进行改进,要求实现如下功能:
1.当窗口最小化或被遮挡时暂停游戏;
2.改变蛇的运动速度,按+号键加速,按-号键减速;
3.手动控制蛇的移动,按下方向键时让蛇朝对应的方向移动,否则静止不动;
4.能够添加多个食物,如当按下某个键后随机添加一个新食物(原来的食物不消失);
5.添加游戏结束规则(比如蛇头碰到边界或蛇身时结束),并能重新开始游戏。
要求至少实现3个功能。
还可以根据自己的创意,加入更多功能。
1.启动java开发环境,运行示例程序。
2.阅读示例程序,分析程序整体结构及各个类的功能。
3.根据实验内容要求修改或添加代码,以实现相应的功能。
在按下方向键时,蛇向该方向运动,当按下大写字母Q时,蛇暂停运动。
对于几个常量的定义
publicstaticfinalintSOUTH=0;
publicstaticfinalintNORTH=1;
publicstaticfinalintEAST=2;
publicstaticfinalintWEST=3;
publicstaticfinalintquilt=4;
控制方向函数:
publicvoidkeyPressed(KeyEvente){
intkeycode=e.getKeyCode();
if(keycode==KeyEvent.VK_P){
isPaused=!
isPaused;
keyisP"
if(!
isPaused){
switch(keycode){
caseKeyEvent.VK_DOWN:
direction=SOUTH;
keyisdown"
+direction);
break;
caseKeyEvent.VK_UP:
direction=NORTH;
keyisup"
caseKeyEvent.VK_RIGHT:
direction=EAST;
keyisright"
caseKeyEvent.VK_LEFT:
direction=WEST;
keyisleft"
caseKeyEvent.VK_Q:
direction=quilt;
keyisquilt"
//如果新坐标落在有效范围内,则进行处理
if((0<
=x&
x<
maxX)&
(0<
=y&
y<
maxY)){
if(matrix[x][y]){//如果新坐标的点上有东西(蛇体或者食物)
if(x==food.x&
y==food.y){//吃到食物,成功
nodeArray.addFirst(food);
//从蛇头赠长
//分数规则,与移动改变方向的次数和速度两个元素有关
intscoreGet=(10000-200*countMove)/timeInterval;
score+=scoreGet>
0?
scoreGet:
10;
countMove=0;
food=createFood();
//创建新的食物
matrix[food.x][food.y]=true;
//设置食物所在位置
returntrue;
}else//吃到蛇体自身,失败
returnfalse;
}else{//如果新坐标的点上没有东西(蛇体),移动蛇体
nodeArray.addFirst(newNode(x,y));
matrix[x][y]=true;
n=(Node)nodeArray.removeLast();
matrix[n.x][n.y]=false;
countMove++;
实验三打砖块游戏设计
一实验目的
通过设计和制作打砖块游戏来理解游戏程序的运行机制,同时学习运用java编程来实现游戏世界中物体间的碰撞检测。
学习和了解打砖块游戏的基本设计思想(参考教材4.5节内容及相关代码),在此基础上进行改进,要求实现如下功能:
1增加生命,如初始时设小球3条命,掉下挡板三次游戏结束;
2增加难度,每个砖块要敲击两次才能消失;
3分数显示,设计积分规则,并在游戏结束时显示出来;
4设置宝物,让宝物隐藏砖块后,打中相应的砖块后改变属性,如小球减速,挡板增长,小球穿越砖块,小球停在挡板上等等;
5增加新的关卡,在初始的游戏过关后能生成新的关卡(改变砖块布局)。
要求至少实现3个功能。
还可以根据自己创意,加入更多功能。
publicclassLifeextendsSprite{
publicLife(){
super(0,0,"
Images/heart1.png"
1);
publicSprite(intx,inty,Stringimfile,intnum){
locX=x;
locY=y;
dx=3;
dy=3;
imFileName=imfile;
numImages=num;
if(numImages==1){
image=setImage(imFileName);
}elseif(numImages>
1){
animPlayer=newAnimation(imFileName,numImages,0,0,false);
image=animPlayer.getCurrentImage();
width=image.getWidth();
height=image.getHeight();
publicvoidpaintComponent(Graphicsg){
super.paintComponent(g);
g.drawString("
分数:
"
+fenshu,200,30);
实验四角色扮演游戏设计
通过设计和制作简单的角色扮演游戏来了解游戏场景设计和角色设计的基本概念和原理,并掌握游戏场景滚动和角色动画播放的基本实现方法。
学习和了解游戏场景设计和角色设计的基本原理(参考教材5、6章内容),在此基础上设计简单的角色扮演游戏,要求实现如下功能:
1.创建一副大尺寸图像(宽和高均超过程序窗口的宽和高),作为游戏的场景图像。
2.实现场景的滚动控制,要求能够在水平方向和垂直方向进行场景滚动(用键盘左右键进行水平滚动控制,上下键进行垂直滚动控制)。
3.创建游戏角色,并实现角色上下左右四个方向行走时的精灵动画播放。
4.将游戏角色加入游戏场景,并控制角色在场景中四处走动,当按下某个方向键时,滚动游戏场景并播放角色朝着相应方向行走的动画。
publicvoidinit(){
imMoveSize=5;
canMoveRight=false;
canMoveLeft=false;
im1=loadImage("
Images/mountains.gif"
im2=loadImage("
Images/houses.gif"
im3=loadImage("
Images/trees.gif"
bg1=newRibbon((int)(imMoveSize*0.2),im1);
bg2=newRibbon((int)(imMoveSize*0.5),im2);
bg3=newRibbon(imMoveSize,im3);
tileImage=newBufferedImage[10];
tiles=newArrayList();
for(inti=0;
i<
9;
i++){
tileImage[i]=loadImage("
Images/tile_"
+(char)(i+'
A'
)+"
.png"
tiles.add(tileImage[i]);
sprites=newArrayList();
tMap=loadTileMap("
Images/map.txt"
3.—4.创建游戏角色,并实现角色上下左右四个方向行走时的精灵动画播放。
将游戏角色加入游戏场景,并控制角色在场景中四处走动,当按下某个方向键时,滚动游戏场景并播放角色朝着相应方向行走的动画。
publicEnemy(intx,inty,GameWorldManagergameWorld){
super(x,y,"
Images/runningRight.gif"
4);
numImages=9;
animRight=newAnimation("
4,50,3,true);
animLeft=newAnimation("
Images/runningLeft.gif"
runningRight=false;
runningLeft=false;
standRight=true;
standLeft=false;
world=gameWorld;
sound=newSoundPlayer();
//offsetX=world.getOffsetX();
//offsetY=world.getOffsetY();
setDX(4);
setDY(0);
setJumpSpeed(JUMPSPEED);
publicvoidmove(){
if(dx>
0){
runningRight=true;
runningLeft=false;
}elseif(dx<
runningLeft=true;
runningRight=false;
if(isJumping){
jump();
onGround=false;
if(jumpSpeed>
=0){
jumpStopped();
isJumping){
dy+=GRAVITY;
locY+=dy;
locX+=dx;
if(hasFoundPlayer()){
if(locX-world.getOffsetX()>
GamePanel.WIDTH/2){
dx=-Math.abs(dx);
dx=Math.abs(dx);
if(runningRight){
animRight.updateImage();
}elseif(runningLeft){
animLeft.updateImage();
if(world.worldCollisionVertical(this,thisPosition(),nextPosition(),0)){
if(dy>
onGround=true;
setDY(0);
onGround=false;
if(world.worldCollisionHorizontal(this,thisPosition(),nextPosition(),0)){
dx=-dx;
if(hasFoundPlayer()&
onGround==true){
isJumping=true;
sound.loadSound("
Sounds/jump.wav"
sound.playSound();
实验五横版动作游戏设计
通过设计和制作横版动作游戏来理解游戏场景与角色的交互、游戏规则设计、游戏音乐设计及游戏关卡设计的基本原理,并掌握横版动作游戏程序的基本实现方法。
学习和了解横版动作游戏的基本设计思想(参考教材7-10章的内容和相关代码),在此基础上进行改进,要求实现如下功能:
1.用其它图像资源替换教材游戏示例中的场景及精灵,同时用其它声音资源替换示例中的音乐和音效;
2.改进NPC(电脑角色)间的碰撞检测及处理规则,如让两个NPC碰到后相互按相反的方向移动等;
3.在游戏地图中设置秘密出口,玩家走到该处可以直接过关;
4.增加新的道具,让玩家得到道具后获得新技能;
5.增加移动障碍物,比如上下(或左右)浮动的木头等;
6.使用关卡编辑器设计一个新关卡。
实验六、七、八、九为综合实验,要求模仿经典游戏“推箱子”来独立地设计一款java游戏,以此理解游戏设计的基本原理,同时练习使用面向对象的程序设计方法。
(说明:
只需要实现任务书上的基本功能,不能从网上copy现成的代码。
需提交可玩的游戏源程序及各次实验的实验报告。
)
实验六推箱子游戏场景设计
一实验目的
理解游戏循环的实现原理,掌握java图像绘制、tile贴图、精灵动画及移动控制的程序实现。
1.绘制游戏场景。
背景底层使用一副图片作为场景,前层用tile贴图表示障碍物。
2.绘制精灵。
包括箱子、玩家角色、标志点。
3.控制玩家移动。
按上下左右方向键后玩家分别向对应的方向移动,同时播放该方向的行走动画。
publicTXZ()
{
TXZmT=newTXZm();
add(T);
setTitle("
推箱子"
setSize(500,500);
setBackground(Color.red);
setLocation(500,500);
setVisible(true);
switch(keycode){
gameWorld.canMoveLeft=true;
man.standLeft=false;
gameWorld.canMoveRight=true;
man.standRight=false;
实验七推箱子游戏交互设计
理解碰撞检测的原理,并掌握其程序的实现方式。
1.玩家与障碍物碰撞。
玩家碰到障碍物后停止移动。
2.玩家与箱子碰撞。
玩家碰到箱子后,箱子朝玩家行走的方向移动一个单位。
3.箱
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java游戏程序设计教程 Java 游戏 程序设计 教程 实验 任务书