名字PK小游戏_名字pk小游戏

其他范文 时间:2020-02-27 22:49:37 收藏本文下载本文
【www.daodoc.com - 其他范文】

名字PK小游戏由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“名字pk小游戏”。

课程设计(大作业)报告

课程名称:算法设计与分析设计题目:姓名挑战游戏院 系:班 级:设 计 者:学 号:指导教师:设计时间:

目 录

1、课程设计目的............................................................................................................................12、课程设计题目分析....................................................................................................................13、课程设计要求............................................................................................................................14、总体设计、算法描述................................................................................................................1

4.1主方法分析........................................................................................................................1 4.2总体分析...........................................................................................................................2 4.4游戏细节设计....................................................................................................................3

4.4.1攻击招式统计........................................................................................................3 4.4.2治疗方法................................................................................................................3 4.4.3不明原因................................................................................................................35、实验总结....................................................................................................................................36、参考文献.....................................................................................................................................4 附录..................................................................................................................................................4 运行结果:.....................................................................................................................................11

1、课程设计目的课程设计是巩固所学理论知识、提高算法设计、分析能力的重要实践环节。算法设计与分析,主要目的是为解决某一问题而提出多种不同的解决方案,并且针对具体问题做细致的时间和空间复杂度分析,选取效率高的算法解决问题,从而达到优化的目的。

通过课程设计的训练,使我们能够巩固所学的算法分析基础理论知识,体会程序设计的全过程,培养我们处理数据的能力,提高我们分析问题、收集资料、解决问题的能力,最终培养理论联系实际,利用各种算法解决实际问题的应用能力。同时可以检测我们对这门课程的掌握情况,有助于查缺补漏。

2、课程设计题目分析

这次课程设计以JAVA语言为基础结合其图形应用界面来设计一个姓名挑战游戏,设计出的游戏有图形化界面,且界面简洁适用;在游戏界面中,输入两个姓名分别作为挑战者和被挑战者,随机产生属性值(战力指数,攻击力,防御力),当HP大于0时,两个名字进行对战,进行多轮攻击挑战后,用hp值决定双方输赢,hp值为0的一方战败,另一方则获胜,达到休闲益智的目的。

3、课程设计要求

程序设计以Java完成,配有图形界面。从分析题目的需求入手,按设计抽象数据类型、构思算法、通过类的设计实现抽象数据类型、编制上机程序代码并调试的步骤完成题目,最终写出完整的分析报告。最后提交作业包括:课程设计报告;完整程序,应该具有可显示界面;PPT及算法说明。

4、总体设计、算法描述

设计思路:为实现游戏的基本功能,必须首先定义一个工具面板,将各模块加入到工具面板中。

程序中用到的包如下:import java.awt.*;import java.awt.event.*;程序中的类有:

cla Game extends Frame implements ActionListener,cla NPCC,cla text。

4.1主方法分析

public cla text /*建立一个公共类text */ { public static void main(String ars[]){

new Game(“姓名挑战游戏”);} } 此部分为主方法部分,在本游戏中主函数主要起连接和导入的作用,对相应的方法进行说明、调用。4.2总体分析

在Game框架中添加组件(Label,TextField,Button,Panel,TextArea,Menu)并布局管理器,使用的是BorderLayout管理器。通过 ActionListener定义一个actionPerformed()方法。

创建一个shuxing()函数,随机产生HP,gongji,fangyu的初始值,对挑战者与被挑战者的属性进行随机处理映射到相应的攻击和反应,不断更新二者的属性值并获取。直到一方hp为0,挑战结束并输出挑战结果及双方最后属性值。

4.3使用到的方法

actionPerformed()方法:在事件分派awt线程中被调用;Thread.Start()方法:创建一个线程,使用Thread类创建线程;add():添加组件到框架中;damage(int gongji):嵌套调用;setBounds(x,y,width,height);x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点;width:组件的宽度 height:组件的高度;shuxing():设置属性值;super():调用父类(Frame)构造函数,s为传入的参数,也就是调用了父类 public;Frame(String s){...}构造函数get():读取数据;set():设置属性;Random():随机数字产生方法;游戏细节设计

4.4游戏细节设计

4.4.1攻击招式统计

1、不小心踩到香蕉皮,摔了一跤

2、中了情花剧毒

3、背部受到九阴白骨爪的伤害

4、手臂被射了一箭,中了七日贱骨头剧毒

5、过马路不小心撞到车了

6、身上被撒了痒痒粉,全身奇痒无比 4.4.2治疗方法

1、吃了一株断肠草,生命增加1002、请求李时珍医治,生命增加3003、擦了华佗送的999牌皮炎平,生命增加800

4.4.3不明原因

可能是皮炎平药效失效了,奇痒发作

5、实验总结

算法分析是一门面向设计,且理论性很强的科目。基于对本门课程的学习,将算法思想灵活运用到设计中来,解决实际问题。我们组设计的是:姓名挑战游戏,由于个人能力有限,编写的代码有一些问题,经过小组讨论,作了一定的改进,这说明我们在编程方面存在很多不足,有待于在以后的学习中不断提高和改进。通过用JAVA编写程序,掌握设计的算法和基本思想,加强了我调试程序的能力,培养了分析、解决问题的能力,提高自己的认识。

在老师的耐心指导和帮助下,我完成了这次课程设计,虽然要改进的地方还有很多,对算法分析中的思想和原理理解的不够透彻,未能有效地与本次设计结合达到创新的目的。但也获得了小小的收获,我锻炼了实际动手能力,拓展了课外知识,积极运用图书馆、网络资源为设计服务。熟悉并灵活运用Editplus软件来编译程序,同时也培养了细心、耐心、虚心的学习态度,并积极与老师、同学进行沟通交流,增加了小组间的凝聚力。本着对自己负责的态度,认真对待本次设计。希望在以后的学习中,我能更好地将理论知识与实践相结合,学会学以致用,学有所用,完善自我,提高自身综合能力。

6、参考文献

[1]《算法设计与分析》王晓东,清华大学出版社。[2]《java编程》张丹丹,人民邮电出版社。

附录

import java.awt.*;import java.awt.event.*;cla Game extends Frame implements ActionListener { Label l1,l2,label0,label1,label2,label3,label4,label5,label6,label7;TextField text1,text2,text3,text4,text5,text6;Button button,button1,button2;Panel p1,p2,p3,p4;TextArea area;Menu menu;MenuBar menubar;MenuItem item1,item2;int HP,gongji,fangyv;int count1=0,count2=0,count3=0,count4=0;Thread thread1;Game(String s){

super(s);

thread1=new Thread();

label0=new Label(“初始血量在2000-3000之间随机产生!”);

l1=new Label(“姓名1”,Label.CENTER);

l2=new Label(“姓名2”,Label.CENTER);

label1=new Label(“姓名1”,Label.CENTER);

label2=new Label(“姓名2”,Label.CENTER);

label3=new Label(“属性1”,Label.CENTER);

label4=new Label(“属性2”,Label.CENTER);

label5=new Label(“PK状态”,Label.CENTER);

label6=new Label(“得到治疗的次数:”+count1+“

受到攻击的次数:”+count2);

label7=new Label(“得到治疗的次数:”+count3+“

受到攻击的次数:”+count4);

p1=new Panel();

p2=new Panel();

p3=new Panel();

p4=new Panel();

area=new TextArea(10,30);

text1=new TextField(5);

text2=new TextField(5);

text3=new TextField(34);

text4=new TextField(34);

text5=new TextField(27);

text6=new TextField(27);

button=new Button(“确定”);

button1=new Button(“重新输入”);

button2=new Button(“退出”);

thread1.start();

add(p1,BorderLayout.NORTH);

add(p2,BorderLayout.CENTER);

p1.add(label0);

p2.add(label1);

p2.add(text1);

p2.add(button);

p2.add(label2);

p2.add(text2);

p2.add(label3);

p2.add(text3);

p2.add(label4);

p2.add(text4);

p2.add(label5);

p2.add(p3);

p2.add(label6);

p2.add(p4);

p2.add(label7);

p2.add(area);

p2.add(button1);

p2.add(button2);

p3.add(l1);p3.add(text5);p4.add(l2);p4.add(text6);l1.setLocation(0, 0);text5.setLocation(20,0);area.setEditable(false);text3.setEditable(false);text4.setEditable(false);text5.setEditable(false);text6.setEditable(false);button.setBackground(Color.LIGHT_GRAY);button1.setBackground(Color.LIGHT_GRAY);button2.setBackground(Color.LIGHT_GRAY);label0.setBackground(Color.orange);label3.setBackground(Color.cyan);label4.setBackground(Color.cyan);label5.setBackground(Color.cyan);button.addActionListener(this);button1.addActionListener(this);button2.addActionListener(this);menu=new Menu(“菜单”);item1=new MenuItem(“打开”);item2=new MenuItem(“退出”);p2.setBackground(Color.green);p1.setBackground(Color.blue);menubar=new MenuBar();menu.add(item1);menu.addSeparator();menu.add(item2);menubar.add(menu);setMenuBar(menubar);item2.addActionListener(this);area.setBackground(Color.yellow);addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){

System.exit(0);} });setBounds(500,100,285,590);setResizable(false);//设置窗口不可调整大小 setVisible(true);

validate();} public void actionPerformed(ActionEvent e){

if(e.getSource()==item2 ||e.getSource()==button2)

System.exit(0);

else if(e.getSource()==button)

{

String name1=text1.getText();

String name2=text2.getText();

NPCC npc1=new NPCC(name1);

NPCC npc2=new NPCC(name2);

npc1.shuxing();

npc2.shuxing();

l1.setText(name1);

l2.setText(name2);

int h1,h2;

h1=npc1.HP;

h2=npc2.HP;

text3.setText(name1+“的属性: 战力指数:”+npc1.HP+“ 攻击:”+npc1.gongji+“ 防御:”+npc1.fangyv);

text4.setText(name2+“的属性: 战力指数:”+npc2.HP+“ 攻击:”+npc2.gongji+“ 防御:”+npc2.fangyv);

int i=0;

while(npc1.HP>0 && npc2.HP>0)

{

if(i%2==0)

{

String s1=npc1.damage(npc2.gongji);

if(npc1.HPP!=0)

{

count1++;

}

else

{

count2++;

}

label6.setText(“得到治疗的次数:”+count1+“

受到攻击的次数:”+count2);

String s=s1;

npc1.HP=npc1.HP+npc1.HPP+npc1.fangyv-npc1.hurt;

if(npc1.HP>h1)

{

area.append(name1+s+'n');

text5.setText(name1+s);

try

{

thread1.sleep(1000);

}

catch(InterruptedException ee){}

npc1.HP=h1;

s1=“血量已达最大值!”;

}

if(npc1.HP

{

npc1.HP=0;

}

text3.setText(name1+“:战力指数:”+npc1.HP+“ 攻击:”+npc1.gongji+“ 防御:”+npc1.fangyv);

text5.setText(name1+s1);

area.append(name1+s1+'n');

area.append(name1+“剩余生命值:”+npc1.HP+'n');

}

else

{

String s2=npc2.damage(npc1.gongji);

if(npc2.HPP!=0)

{

count3++;

}

else

{

count4++;

}

label7.setText(“得到治疗的次数:”+count3+“

受到攻击的次数:”+count4);

String s=s2;

npc2.HP=npc2.HP+npc2.HPP+npc2.fangyv-npc2.hurt;

if(npc2.HP>h2)

{

text6.setText(name2+s);

area.append(name2+s+'n');

try

{

thread1.sleep(1000);

}

catch(InterruptedException ee){}

npc2.HP=h2;

s2=“血量已达最大值!”;

}

if(npc2.HP

{

npc2.HP=0;

}

text4.setText(name2+“:战力指数:”+npc2.HP+“ 攻击:”+npc2.gongji+“ 防御:”+npc2.fangyv);

text6.setText(name2+s2);

area.append(name2+s2+'n');

area.append(name2+“剩余生命值:”+npc2.HP+'n');

}

try

{

thread1.sleep(1000);

}

catch(InterruptedException ee){}

i++;

}

if(npc1.HP

{

text5.setText(“哎呀妈呀,我太虚弱了!认输啦n”);

text6.setText(“嘎嘎嘎,我太厉害啦!”+name1+“,翘翘了。。n”);

area.append(name1+“被”+name2+“打败了n”);

}

else if(npc2.HP

{

text5.setText(“嘎嘎嘎,我太厉害啦!”+name2+“,翘翘啦。。n”);

text6.setText(“哎呀妈呀,我太虚弱了!认输啦nn”);

area.append(name2+“ 被”+name1+“ 打败了n”);

}

}

else if(e.getSource()==button1)

{

text1.setText(null);

text2.setText(null);

text3.setText(null);

text4.setText(null);

text5.setText(null);

text6.setText(null);

area.setText(null);

label6.setText(“得到治疗的次数:”+0+“

受到攻击的次数:”+0);

label7.setText(“得到治疗的次数:”+0+“

受到攻击的次数:”+0);

l1.setText(“姓名1”);

l2.setText(“姓名2”);

} } } cla NPCC { String name,s;int HP,gongji,fangyv;int HPP=0;int hurt=0;NPCC(String name){

this.name=name;} public void shuxing(){

HP=(int)(Math.random()*1000)+2000;

gongji=(int)(Math.random()*150)+80;

fangyv=(int)(Math.random()*30)+50;} public String damage(int gongji){

int a=(int)(Math.random()*10);

switch(a)

{

case 1:

s=“不小心踩到香蕉皮,摔了一跤”;

hurt=gongji;

HPP=0;

break;

case 2:

s=“中了情花剧毒”;

hurt=gongji*2;

HPP=0;

break;

case 3:

s=“吃了一株断肠草,生命增加100”;

HPP=HPP+100;

hurt=0;

break;

case 4:

s=“背部受到九阴白骨爪的伤害”;

hurt=gongji*3;

HPP=0;

break;

case 5:

s=“请求李时珍医治,生命增加300”;

HPP=HPP+300;

hurt=0;

break;

case 6:

s=“手臂被射了一箭,中了七日贱骨头剧毒”;

hurt=gongji*4;

HPP=0;

break;

case 7:

s=“过马路不小心撞到车了”;

hurt=gongji*5;

HPP=0;

break;

case 8:

s=“身上被撒了痒痒粉,全身奇痒无比”;

hurt=gongji*6;

HPP=0;

break;

case 9:

s=“擦了华佗送的999牌皮炎平,生命增加800”;

HPP=HPP+800;

hurt=0;

break;

default:

s=“可能是皮炎平药效失效了,奇痒发作”;

break;

}

return s;} } public cla text { public static void main(String ars[]){

new Game(“姓名挑战游戏”);} } 运行结果:

下载名字PK小游戏word格式文档
下载名字PK小游戏.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文