游戏程序设计报告
- 格式:docx
- 大小:257.26 KB
- 文档页数:12
⽯头-剪⼑-布游戏课程设计报告华东交通⼤学课程设计报告书所属课程名称C++语⾔及程序设计题⽬⽯头-剪⼑-布游戏院(系)基础科学学院班级09应⽤化学(⼀)班学号20090810030118 学⽣姓名游斌指导教师杜玲玲辅导教师杜玲玲2010年7 ⽉3 ⽇课程设计(论⽂)任务书基础学院应⽤化学专业09-1班⼀、课程设计(论⽂)题⽬:⽯头-剪⼑-布游戏⼆、课程设计(论⽂)⼯作⾃2010 年 6 ⽉28⽇起⾄ 2010 年7⽉ 2 ⽇⽌三、课程设计(论⽂) 地点:四、课程设计(论⽂)内容要求:1. 本课程设计的⽬的(1)进⼀步巩固和加深对“C++程序设计”课程基本知识的理解和掌握,了解C ++语⾔在项⽬开发中的应⽤。
(2)学习程序设计开发的⼀般⽅法,了解和掌握项⽬开发过程及⽅式,培养正确的设计思想和分析问题、解决问题的能⼒,特别是项⽬设计能⼒。
(3)通过对标准化、规范化⽂档的掌握并查阅有关技术资料等,培养项⽬设计开发能⼒,同时提倡团队合作精神。
2. 课程设计的任务及要求1) 基本要求:(1)对系统功能进⾏需求分析;(2)使⽤Visual C++编译器进⾏程序编译;(3)提出系统的设计⽅案;(4)编写源程序代码并进⾏调试。
2) 创新要求在基本要求达到后,可进⾏创新设计。
3) 课程设计报告撰写及装订要求课程设计报告的撰写要求表述简明,图表准确。
报告按如下内容和顺序⽤A4纸进⾏打印并装订成册。
(1)封⾯采⽤统⼀的课程设计封⾯,并按要求填写好封⾯要求的个⼈信息和选题。
(2)设计任务书(3)评阅书(4)⽬录(5)正⽂(6)主要参考⽂献4) 课程设计评分标准:每⼈按指定题⽬进⾏设计,严禁抄袭,除了出圈游戏,职⼯信息管理和有理数计算三道选题允许3⼈/组,其他各选题2⼈/组。
要求每⼈⾃⼰动⼿编写程序,采取同⼀组同时检查程序及运⾏结果,检查时同组成员每⼈陈述⾃⼰的分⼯,同⼀选题不同组如发现代码完全⼀样,则双⽅都作不及格处理。
贪吃蛇游戏程序设计实验报告贪吃蛇游戏程序设计实验报告1、引言1.1 文档目的1.2 背景介绍1.3 项目概述2、需求分析2.1 用户需求2.2 功能需求2.3 非功能需求3、总体设计3.1 系统结构3.2 使用的开发工具和技术3.3 程序流程图3.4 数据结构设计4、模块设计4.1 游戏界面模块设计4.2 蛇的移动模块设计4.3 食物模块设计4.4 游戏结束判定模块设计5、开发过程5.1 编码规范5.2 界面设计与实现5.3 功能模块实现5.4 联合测试与整合调试6、测试结果与分析6.1 单元测试6.2 集成测试6.3 性能测试6.4 用户验收测试7、部署与运维7.1 系统环境要求7.2 安装步骤7.3 运行与维护8、问题与解决方案8.1 开发中的问题8.2 解决方案9、结论9.1 实验总结9.2 实现目标9.3 后续改进方向附件:- 源代码文件- 参考文献法律名词及注释:- 版权:保护原创作品的独有权利,防止他人未经授权使用、复制或传播。
- 许可证:授权他人在特定条件下使用受版权保护的作品。
- 商标:用于标识特定产品或服务来源的标识,可以是文字、图形、颜色或声音。
- 专利:通过创造一种新的发明而获得的对该发明的独有权利,防止他人在未获许可的情况下制造、使用或销售该发明。
- 使用条款:规定使用软件、服务或作品的条件和限制。
- 免责声明:声明作者或提供者对使用软件、服务或作品时可能产生的损害不承担责任。
全文结束 \。
游戏课程设计报告题目:超级黑白棋班级:11数媒姓名:徐继涛学号:1108040352014年 1 月6日目录一、目的与要求……………………………………………………………………….二、游戏设计方案……………………………………………………………………三、游戏开发平台构建……………………………………………………四、项目设计……………………………………………………………………….五、游戏创新描述……………………………………………………………………六、调试运行与分析…………………………………………………………七、程序清单………………………………………………………………………. 参考文献…………………………………………………………………………...一、游戏设计目的及要求通过游戏程序设计,提高编程兴趣与编程思路,巩固C++语言中所学的知识,合理的运用资料,实现理论与实际相结合。
黑白棋,又叫反棋、奥赛罗棋、苹果棋或翻转棋。
黑白棋在西方和日本很流行。
游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。
它的游戏规则简单,因此上手很容易,但是它的变化又非常复杂。
有一种说法是:只需要几分钟学会它,却需要一生的时间去精通它。
(1).收集资料,分析课题,分解问题,形成总体设计思路;(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;(3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;(4).完成课程设计报告,并进行答辩(5).黑白棋的棋盘是一个有8*8方格的棋盘。
下棋时将棋下在空格中间,而不是像围棋一样下在交叉点上。
开始时在棋盘正中有两白两黑四个棋子交叉放置。
游戏结束时输出得分。
画出模块枝干图与每个模块的程序流程图。
修改某些代码,改变其外观及功能。
(6).游戏操作应尽量简单。
界面美观,让人看了觉得舒服。
二、游戏设计方案2.1、算法设计:玩游戏过程采用递归算法,控制循环过程,可使游戏重复玩,判断迷宫游戏结束的算法是通过判断人有没有到达终点。
游戏开发报告
一、项目概述
随着游戏行业的不断发展,越来越多的玩家开始追寻更加高品质的游戏体验。
此项目旨在打造一款性能优良、玩法丰富、画面精美的游戏,带给玩家全新的游戏体验。
二、项目分工
本项目共涉及到游戏策划、美术设计、程序开发三个方面的工作。
游戏策划:
根据市场调查,确定游戏类型、游戏玩法、游戏关卡设计等内容。
美术设计:
负责游戏UI设计、游戏场景设计、角色设计、特效制作等相关工作。
程序开发:
负责实现游戏策划与美术设计确定的内容,保证游戏正常运行、性能稳定、系统兼容性等要求。
三、技术方案
为了实现游戏的高品质要求,我们选用了Unity3D引擎进行游
戏开发。
同时,我们采用客户端/服务器架构,确保游戏运行流畅,玩家在游戏中的数据可以被持久化保存,且游戏运行中的偏差可
以得到有效地纠正。
四、项目进度
截至目前,我们已经完成了游戏策划部分的工作,完成了UI
设计和游戏场景设计,已经逐步开发出了初步的游戏玩法。
我们
正式开始程序开发的相关工作,并计划在今年年底前完成未来所
有的开发工作。
五、风险与控制
本项目可能面临到技术风险、成本风险和市场风险的挑战。
我
们会通过前期充分的技术调研、保证开发进度和把握市场趋势等
方面的工作,尽力降低风险,并保证项目的顺利进行。
六、总结
在游戏开发的过程中,我们会以玩家的需求为中心,保证游戏品质与玩家体验。
我们将保证本项目按照预定的时间进度、经费预算、质量标准来进行开发。
C语言课程设计报告主标题: C语言课程设计副标题:俄罗斯方块游戏----界面设计姓名:卢文俊指导教师:刘慧院系:信息工程学院专业:计算机科学与技术班级: 11计本(二)班小组成员:卢文俊,齐伟,陈龙提交日期: 2012-6-7俄罗斯方块程序设计报告一、问题描述:要求支持键盘操作和7种不同类型方块的旋转变换,并且界面上显示下一个方块的提示以及当前的玩家的得分,随着游戏的进行,等级越高,游戏难度越大,即方块的下落速度越快,相应的等级,等级越高,消去一行所得到的分数越高,为玩家提供了不同的选择。
二、功能分析:俄罗斯方块游戏需要解决的问题包括:⑴按任意键开始游戏,随机产生方块并自动下移⑵用Esc键退出游戏。
⑶用键变换方块⑷用键和键左右移动方块⑸用键使方块加速下移⑹用空格键使方块直接下移⑺能正确判断满行并消行、计分、定级别⑻能正确计时⑼设定游戏为不同级别,级别越高难度越大重点:*游戏面包的数据结构:二维数组*7种形状方块的数据结构:结构体保存每种形状方块的坐标、颜色三、程序设计:1、程序总体设计结构:首先初始化进入图形模式,进入欢迎界面,玩家按任意进入主菜单界面,按键进入游戏界面,键然后设置新的时钟中断。
开始游戏后,进入该程序最核心的部分——处理和实现进行过程中的各种事件和函数。
在处理中判断游戏是否结束,如果没有结束,则重新开始游戏,否则结束游戏。
详解如下:(1)、游戏方块预览功能。
在游戏过程中,当在游戏底板中出现一个游戏方块时,必须在游戏方块预览区域中出现下一个游戏方块,这样有利于游戏玩家控制游戏的策略。
由于在此游戏中存在19种不同的游戏方块,所以在游戏方块预览区域中需要显示随机生成的游戏方块。
(2)、游戏方块控制功能。
通过各种条件的判断,实现对游戏方块的左移、右移、快速下移、自由下落、旋转功能,以及行满消除行的功能。
否(3)、游戏显示更新功能。
在判断键值时,有左移VK_LEFT、右移VK_RIGHT、下移VK_DOWN、变形旋转VK_UP、退出VK_ESC键值的判断。
c 游戏课程设计报告一、教学目标本课程的教学目标是让同学们掌握C语言的基本语法,能够运用C语言进行简单的程序设计。
具体分为以下三个部分:1.知识目标:掌握C语言的基本数据类型、运算符、控制结构、函数等基本概念。
2.技能目标:能够使用C语言编写并运行简单的程序,解决实际问题。
3.情感态度价值观目标:培养同学们对计算机科学的兴趣,提高逻辑思维能力,培养良好的编程习惯。
二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.C语言的基本数据类型和运算符。
2.控制结构,包括条件语句和循环语句。
3.函数的定义和调用。
4.指针的概念和应用。
5.文件的操作。
6.简单算法的设计和分析。
三、教学方法为了达到课程目标,我们将采用以下教学方法:1.讲授法:讲解C语言的基本概念和语法。
2.案例分析法:通过分析具体的编程案例,让同学们理解并掌握C语言的用法。
3.实验法:让同学们动手编写程序,解决实际问题,提高编程能力。
4.讨论法:同学们进行小组讨论,分享学习心得,互相学习,提高解决问题的能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》。
2.参考书:《C Primer Plus》、《C和指针》。
3.多媒体资料:教学PPT、编程教程视频。
4.实验设备:计算机、网络环境。
5.在线编程平台:如LeetCode、牛客网等,供同学们进行编程练习。
五、教学评估本课程的评估方式包括以下几个部分:1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总评的20%。
2.作业:包括课后练习和编程任务,占总评的30%。
3.考试:包括期中和期末考试,占总评的50%。
考试形式分为选择题、填空题、编程题和问答题,全面考察同学们对C语言知识的掌握和运用能力。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节顺序进行,每个章节安排2-4节课。
2.教学时间:每周安排2节课,共45分钟/节。
大富翁程序设计及其实验报告新手小白,希望各位大佬能多多提出建议,大家一同进步前言设计题目:C语言游戏———大富翁(简易版)一、采用的数据存储结构及所代表的含义Input:判断是否进行游戏num1,num2,a1,a2:累计掷出骰子数所对应棋盘上的位置fund=2000,fund2=2000:初始资金c:判断游戏是否终止b1 = b2=:掷出的总数i=1:判断A/B进行游戏二、设计思路第一步:判断游戏是否进行第二步:判断A/B玩家进行第三步:值骰子第四步:判断掷出的数所对应效果第五步:判断是否获得成就第六步:判断是否有玩家破产第七步:若有破产则终止程序反之返回第二步第八步:判断谁获胜并输出第九步:询问是否重新游戏三:设计中的难点及解决方案难点1:产生随机数解决:利用rand函数但其只在一定范围内可以看成随机的,所以在引入srand函数利用time(NULL)变化的种子使其随机性增加难点2:棋盘可变性解决:利用头文件宏定义变量可以改变棋盘大小四:程序代码play.c#include<stdio.h> #include<stdlib.h> #include<time.h> int num1,num2, a1,a2, fund=2000,fund2=2000,c, b1 = 0,b2=0,i=1; int play(int row , int col) { printf(玩家A与B的初始资金均2000元); do { printf(****************************); printf(********* 1.continue *****); printf(********* 0.end **********); printf(****************************); scanf(%d, &c);//是否继续游戏 if (c == 0) break;//判断游戏是否终止 if (i % 2 == 1)//判断玩家A/B进行 { printf(玩家A 的回合); srand((int)time(NULL));//用于设置rand()产生随机数时的种子,time(NULL)变化的种子 num1 = rand() % 6 + 1;//生成随机数 printf(掷出结果为%d, num1); b1 += num1; a1 = b1 % (((row+col))*2+4);//在地图上所走位置 i++; switch (a1)//判断其走的步数所对应效果 { case 6: printf(倒退三步); a1 -= 3; b1 -= 3; break; case 2: printf(银行利率增长); fund *= 2; printf(剩余资金为%d, fund); break; case 5: printf(科创获奖得500元); fund += 500; printf(剩余资金为%d, fund); break; case 7: printf(被电诈骗700元); fund -= 700; printf(剩余资金为%d, fund); break; case 9: printf(投资基金增长); fund *= 5; printf(剩余资金为%d, fund); break; case : printf(前进四步); a1 += 4; b1 += 4; case 12: printf(奖学金得1000元); fund += 1000; printf(剩余资金为%d, fund); break; case 11: printf(股票暴跌); fund /= 4; printf(剩余资金为%d, fund); break; case 15: printf(投资被骗); fund /= 2; printf(剩余资金为%d, fund); break; default: printf(剩余资金为%d, fund); break; } if (fund > &&fund<) printf(累计达成成就初出茅庐); else if (fund > &&fund< ) printf(累计达成成就初出茅庐小有成就); else if (fund > &&fund< ) printf(累计达成成就初出茅庐小有成就资金充裕); else if (fund > ) printf(累计达成成就初出茅庐小有成就资金充裕资金高手); //判断获得的成就 } else { printf(玩家B的回合); srand((int)time(NULL)); num2 = rand() % 6 + 1; printf(掷出结果为%d, num2); b2 += num2; a2 = b2 % (((row + col)) * 2 + 4); i++; switch (a2) { case 6: printf(倒退三步); a2 -= 3; b2 -= 3; break; case 2: printf(银行利率增长); fund2 *= 2; printf(剩余资金为%d, fund2); break; case 5: printf(科创获奖得500元); fund2 += 500; printf(剩余资金为%d, fund2); break; case 7: printf(被电诈骗700元); fund2 -= 700; printf(剩余资金为%d, fund2); break; case 9: printf(投资基金增长); fund2 *= 5; printf(剩余资金为%d, fund2); break; case : printf(前进四步); a2 += 4; b2 += 4; case 12: printf(奖学金得1000元); fund2 += 1000; printf(剩余资金为%d, fund2); break; case 11: printf(股票暴跌); fund2 /= 4; printf(剩余资金为%d, fund2); break; case 15: printf(投资被骗); fund2 /= 2; printf(剩余资金为%d, fund2); break; default: printf(剩余资金为%d, fund2); break; } if (fund2 > && fund2 < ) printf(累计达成成就初出茅庐); else if (fund2 > && fund2 < ) printf(累计达成成就初出茅庐小有成就); else if (fund2 > && fund2 < ) printf(累计达成成就初出茅庐小有成就资金充裕); else if (fund2 > ) printf(累计达成成就初出茅庐小有成就资金充裕资金高手资金高手); } } while (fund > 0&&fund2 > 0);//判断是否出现破产 if (fund2 > fund) { printf(恭喜B胜利); } else printf(恭喜A胜利); return 0;//判断A/B胜利 }main.c#include<stdio.h> #includegame.h int main() { int input; do { printf(****************************); printf(********* 1.play *********); printf(********* 0.exit *********); printf(****************************); printf(请选择:>);//请选择是否开始游戏 scanf(%d,&input); switch (input)//判断用户的选择 { case 1: play( ROW , COL); break; case 0: printf(退出游戏); break; default: printf(选择错误重新选择); break; } } while (input); }game.h#pragma once #define ROW 7 #define COL 4//确定棋盘大小 int play(int row, int col);//调用函数总结本次实验设计通过对循环结构,选择结构的运用,使我对这些结构有了更好的理解;并且通过不断研究,也了解到了随机数生成的方式以及头文件的利用,让我对程序设计有了新的理解,利用代码可以更加方便的进行一些工作,还可以获得乐趣,同样与同伴一起讨论研究,使代码的编写过程也不枯燥,一次很好的设计体验。
湖南科技大学游戏程序设计报告游戏名称:扑克牌游戏指导教师:陈林书专业班级:网络工程班学号:0905020114姓名:刘隆乾程序名称:扑克牌游戏程序功能简介:1)创建一副扑克牌,可根据需要选择有大小王或者没有大小王的扑克牌。
2)根据需要输入参与扑克牌游戏的人数。
3)重新初始化整副扑克牌,清除所有打牌者的扑克牌,并显示。
4)洗牌,并显示。
5)发牌,并显示。
6)去掉一张最上面的扑克牌,并显示7)清除所有打牌者的扑克牌,并显示。
8)显示没有发出的扑克牌的情况。
9)显示所有打牌者的扑克牌的情况。
P.S.黑体字为自行增加的功能。
对增加模块设计的分析及注解:由于对原代码很多地方觉得难以理解,且原代码有的地方用的是硬代码,所以新编写的程序只有洗牌的思路是按原代码的思路编写的,但还是改成了栈(Stack)的运行方式。
这个程序的编写是充分利用C++的面向对象的特性来写的,封装性、隐蔽性、多态性等等都有很好体现,可以说,这个程序除了没有用继承性,其他都用到了。
Class的本身就具有封装性和隐蔽性,模板类就是多态性的——类型参数多态性。
void InitMainMenu(){void Menu1(int playernum);void Menu2(int playernum);int MainMenuSelect;MainMenuSelect = 1;do{cout << endl;cout << endl;cout << "*************主菜单***************" << endl;cout << "1.有大小王的扑克牌(54张)" << endl;cout << "2.无大小王的扑克牌(52张)" << endl;cout << "3.退出本系统" << endl;cout << "请选择[1-3] " << endl;cout << "**********************************" << endl;cout << "您的选择为: ";MainMenuSelect = GetInt(1, 3);cout << endl;cout << endl;switch (MainMenuSelect){case 1:cout << "输入打牌人数: ";Menu1(GetInt(1, 9));break;case 2:cout << "输入打牌人数: ";Menu2(GetInt(1, 9));break;}}while (MainMenuSelect != 3);}程序运行后先选择是否需要有大小王的扑克牌。
C++课程设计实验报告1、程序名称:扑克牌游戏2、程序设计功能:创建一副扑克牌,并完成洗牌等相关操作。
3、程序设计要求:(1)增加大小王。
(2)删去一张指定的牌后,余牌显示。
(3)创建一副扑克,显示一副扑克牌,洗牌,一次分发给四个人并显示。
程序设计过程中根据设计思想添加功能:(1)根据洗牌参数,添加入可以让玩牌者控制洗牌次数的功能。
(2)在可以完成每人删除一张牌的功能基础上,增加可以删除一轮牌(也就是同时每人删除一张牌)的功能。
4、对题目的分析与注释总体分析:根据题目的设计要求,增加满足要求所需要的函数,实现相应功能,通过合理安排调用过程,实现题目要求的功能。
注释:(已在程序设计过程中指出)5、增加功能的设计思路(1)增加大小王实现函数:Deck::MakeDe ck()Playin gCard::CardMa ke()Deck::MakeDe ck()将参数nLastDel t由51增加到53,生成一副扑克牌的54张牌(0~54),实际上是多分配了两张大小王的空间,控制参数nLastDe lt 的变化,再通过调用函数PlayingCa rd::CardMa ke()将参数传递给n Num,为每张牌(包括大小王)赋予正确的面值和花色,由此生成一副完整的牌。
其中对大小王的赋值是添加的功能,具体实现过程如下:void Playin gCard::CardMa ke(int nNum)//跟据nNum生成一张扑克牌,nNum不同,生成的面值花色{int i = 0;char j;if(nNum==53) //生成大王{strcpy(achFac e," B");chSuit=2;nValue=15;}if(nNum==52) //生成小王{strcpy(achFac e," S");chSuit=1;nValue=14;}由此段程序可知,参数nLastDelt是由大到小变化的,所以54张牌中首先生成大小王,至于其他牌的生成,是课本源程序上自带的,牌的花色由相应的ASC II码来赋值。
推箱子游戏详细设计报告一、 引言在前一阶段(概要设计)中,已解决了实现该游戏需求的程序模块设计问题。
包括游戏模块间的关系设计,以及数据结构和模块结构的设计等。
在以下的详细设计报告中将对在本阶段中对游戏所做的所有详细设计进行说明。
本阶段依据概要设计的要求,确定应该如何具体地实现所要求的游戏,从而在编码阶段可以把这个描述直接翻译成用具体的 程序语言书写的程序。
具体包括各功能模块信息的录入和修改以及删除等。
1.2目的目的是在训练你的逻辑思考能力。
在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。
可以开发青少年学生的智力,又可以防止老年痴呆症。
1.3参考资料《C 程序设计(第三版)》,谭浩强编,清华大学出版社《Turbo C 2.0实用大全》,常玉龙等编写,北京航空航天大学出版社 《C 语言趣味程序百例精解》,陈朔鹰 陈英主编,北京理工大学出版社 《C 游戏编程从入门到精通》,浦滨著, 北京希望电子出版社 《C 函数实用手册》,张曜 郭立山 吴天著, 冶金工业出版社 二、总体设计2.1需求概要用户在进入游戏后,可以根据自己的想法自由移动箱子,游戏提供自由选关的功能模块,凭借这些模块,玩家可以实现对游戏快速通关! 2.2软件各模块结构 1、初始化模块:该模块包括和游戏。
屏幕初始化用于输出游戏的操作提示,游戏的每一关的初始化是初始化模块每一关的初始化2、 图画模块:该模块主要是被其它模块调用,用于画墙、在空地画箱子、在目的地画箱子、和画目的地。
画墙画箱子画图模块 画小人画目的地目的地画箱子3、移动箱子模块:空地之间箱子的移动移动箱子模块 目的地之间箱子的移动 目的地与空地之间的箱子移动4、移动小人模块:小人移动移动小人推动箱子到目的地5、功能控制模块:屏幕输出功能功能控制模块 指定位置状态判断功能关卡重置功能三、程序描述1初始化模块○1:开始主要的初始化就是屏幕初始化,用于输出游戏的操作提示,使玩家能知道游戏怎么玩!○2:每一个关卡的初始化,在游戏不能通关时,按空格键回到刚开始玩这个关卡的初始状态以实现玩家能快速通关!○3:进行下一关的初始化,就是这一关已经通关,要进入下一关的游戏,使游戏显示下一关的初始状态!2图画模块这个模块的功能不是很多,也比较简单,主要就是:○1:画墙:用方块表示,画出墙的形状和大小,以确定该关卡的难度。
2011年6月3日第一章引言 (1)1.1研究背景 (1)第二章需求分析与系统设计 (2)2.1设计目的 (2)2.2设计要求 (3)2.3实现功能 (3)2.4界面设计 (4)2.5详细设计 (4)2.6结构模块 (6)第三章开发平台及开发技术 (6)3.1J2ME基础知识 (6)3.2开发工具和环境搭配 (6)3.2.1开发工具 (6)3.2.2环境搭配 (7)第四章模块具体实现以及主要动画触发解释 (7)4.1key代码 (7)4.2electricity代码 (9)第五章心得体会 (11)第一章引言1.1研究背景Green foot是针对那些想让自己熟悉如何使用JAVA的人而设计的,是一个功能完整的开发环境,可以使用Java方便地编写游戏和进行模拟。
它还可以被用来作为Java语言的教程,以及设计网络游戏,可以实用于所有年龄段的用户,而不仅仅是初学者。
最主要的是Green foot和BlueJ系统一样,对任何用途都是免费的。
这个系统以及它的文档可以重新发布而不需要任何费用,为使用和学习JAVA的朋友提供了一个很好的环境。
Greenfoot可以认为是一个用java语言创建二维图形程序的框架和IDE的结合体,很适合初学者使用。
Greenfoot支持java的全部特性,它特别适合练习可视化组件的编程。
在Greenfoot中,对象的可视化和对象的交互性是关键。
在Greenfoot的帮助之下一些软件游戏的开发变得很简单。
我这次开发的是一款益智类的游戏。
我希望通过自己的所学知识把它剖析开来,真正的了解它的本质和精髓。
虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践和实际的项目中提高自己的编程能力。
第二章需求分析与系统设计2.1设计目的通过本学期对游戏程序的研究,我们掌握了运用greenfoot来制作游戏的技术,虽然不娴熟还有待提高,但是一些技术含量较低的小游戏还是很容易让我们掌握的。
此次游戏程序设计的目的,主要是通过greenfoot来制作游戏来更好的掌握java语言。
通过greenfoot这个平台,熟习greenfoot在制作游戏方面所需要的技巧,将自己的游戏尽可能多的运用所学到的技术,并且将在平时java课程上面学到的知识付诸于实践,并从实际操作中,找出自己的不足之处进行弥补。
每一次的课程设计,都是一次小小的软件工程,所以需要我们用百分百的的态度来对待。
对于小一点的程序,我们一个人足以应付,但是这并不是说我们可以单独一个人为所欲为,其实质应该是通过课程设计来锻炼自己独立自主的能力。
而对于那些相对于麻烦的程序,就需要两个或者多个人来共同完成,这便需要他们的协作能力,这样对他们以后进入软件公司发展有了更多的基础。
2.2设计要求这次课程设计的要求并不像以往那么紧,老师让我们可以通过多个平台和系统来制作游戏,包括电脑游戏和手机游戏,从sun公司的手机开发平台WTK,到谷歌的安卓操作系统,只要我们喜好哪一个,并有能力完成就可以了。
所以,这次我选择了greenfoot作为我游戏编程的平台。
因为我平时学习的就是java语言,而greenfoot便是一个已Java语言为基础的游戏开发平台,所以,在编程的过程中不仅提高了效率,也让我对java语言和greenfoot之间衔接的关系有了更深了理解,同样,也让我更加熟习了这个游戏开发平台的环境。
2.3实现功能此次我的课程设计的游戏名称为:“小鸡历险记”。
通过名字,我们就可以看出,这是一个益智类的游戏。
它的由来,是我根据超级玛丽的灵感而生的。
超级玛丽这个游戏就是一个结合控制和脑力与一体的游戏,充分缓解玩家的心情,让玩家在娱乐中找到成功。
我的这游戏,玩家控制的便是一个类似于超级玛丽的一个任务,他是以一个小鸡的模型组成的,具有一定的生命值,一般都为3。
接下来便是像超级玛丽这个游戏一样,在游戏中会出现一些移动的物体和火球,这些便是敌人,玩家要按上、下、左、右,控制小鸡的方向。
如果躲闪不及时,便回减去一滴血,从而生命值便会减一个。
随着关数的增加,过关的难度也会随之增加。
这个游戏的特别之处:①:可以选择不同的难度来挑战相同的关卡,以次增加游戏的可玩性;②:没有死亡模式,这样可以让玩家通过多次的尝试之后来完成任务。
③:有BOSS模式,玩家可以尝试击败BOSS来进入下一个关卡,增加游戏的可玩性。
2.4界面设计这个程序是一个益智类的游戏,包括躲避敌人、杀死敌人。
是一个单机游戏,同一时刻只能有一位玩家进行游戏。
如图12.5详细设计系统流程图:游戏开局出现如图1,然后进行难度的选择,再是关卡的选择,然后就可以游戏了,如果失败那就继续游戏,直到成功为止。
如果一直没有成功,上诉循环过程。
虽然是一直循环下去的,但是只要修改一下程序就可以修改。
2.6结构模块第三章开发平台及开发技术3.1J2ME基础知识Green foot是针对那些想让自己熟悉如何使用JAVA的人而设计的是一个功能完整的开发环境,可以使用Java方便地编写游戏和进行模拟。
它还可以被用来作为Java语言的教程,以及设计网络游戏,可以实用于所有年龄段的用户,而不仅仅是初学者最主要的是Green foot和BlueJ系统一样,对任何用途都是免费的。
这个系统以及它的文档可以重新发布而不需要任何费用,为使用和学习JAVA的朋友提供了一个很好的环境.3.2开发工具和环境搭配3.2.1开发工具Greenfoot可以认为是一个用java语言创建二维图形程序的框架和IDE 的结合体,很适合初学者使用。
Greenfoot支持java的全部特性,它特别适合练习可视化组件的编程。
在Greenfoot中,对象的可视化和对象的交互性是关键。
如果你知道BlueJ和Microworld这两个框架的话,Greenfoot可以看作他们的结合。
这个框架可以用来实现基于二维网格的很多程序。
greenfoot的框架负责两部分工作:简便的产生对象的图形化显示,按照模拟的路线运行。
为了实现这些功能,Greenfoot框架提供了一个GreenfootObject基类,其他任何想实现可视化的类都要继承他。
必须执行的两个最重要的方法是:getImage()返回对象的图形,act()将在模拟路线中调用。
3.2.2环境搭配(1)计算机的环境变量需要设置,计算机需要安装JDK版本为1.6。
由于GREEN FOOT需要绑定JDK。
(2)Green Foot的安装,需要到官网上下载正确的Green Foot版本,安装后需要测试时候可以使用,是否与JDK绑定。
第四章模块具体实现以及主要动画触发解释4.1key代码public class key extends Actor{boolean bpickedup=false;boolean bremoved=false;private myWorld mworld;public void addedToWorld(World world){mworld=(myWorld)world;}public void act(){if(bremoved){return;}findplayer();picked();}private void findplayer(){if(bpickedup){return;}//if its already picked up then dont botherplayer neb=(player)getOneIntersectingObject(player.class);if(neb!=null){Greenfoot.playSound("keycollect.wav");bpickedup=true;}}private void findenemy(){getOneObjectAtOffset(0,8,enemy.class);enemy mutantleg=(enemy)getOneIntersectingObject(enemy.class);if(mutantleg!=null&&mutantleg.health>1&&!mutantleg.bKnockedOut&&mutantleg.canbeattacked()){mutantleg.health=1;mutantleg.ys=-3;mutantleg.knockmeout();Greenfoot.playSound("kick.wav");getWorld().addObject(new effect(),mutantleg.getX(),mutantleg.getY()-8);}}}介绍Key这个类:首先这个类必须是继承Actor这个父类的,然后是Finddoor这个方法,先是一个判断:如果有Key则开门,反之则不开门,有Key方可进入下一关卡。
玩家必须拿到钥匙之后方可进入下一个关卡。
4.2electricity代码public class electricity extends hazard{boolean bRemoved=false;float xs,ys;int health=22;float xx,yy;public electricity(boolean noeffect){xs=0.1f*(float)(Greenfoot.getRandomNumber(16)-Greenfoot.getRandomNumber(16));ys=0.1f*(float)(Greenfoot.getRandomNumber(16)-Greenfoot.getRandomNumber(16));health=13;}public electricity(){xs=0.1f*(float)(Greenfoot.getRandomNumber(40)-Greenfoot.getRandomNumber(40));ys=0.1f*(float)(Greenfoot.getRandomNumber(40)-Greenfoot.getRandomNumber(40));}public void addedToWorld(World world){yy=getY();xx=getX();}public void act(){if(bRemoved){return;}huntplayer();xx+=xs;yy+=ys;setLocation((int)xx,(int)yy);setRotation(Greenfoot.getRandomNumber(360));health--;if(health<=0){removeme();}}private void removeme(){if(bRemoved){return;}bRemoved=true;getWorld().removeObject(this);}}敌人自动寻找玩家,进行一些无规则的运动,如在攻击范围之内就会触发electric这个类,敌人就会变化成后者这个形态,玩家要做的就是远离敌人攻击状态。