(五十六)写了一个小的对战程序

#include<iostream>

#include <string>

using namespace std;

void battle(string*, int*, int*, int*, string*, int*, int*, int*);

 

struct shuxing

{

string name;

int str;

int hp;

int def;

};

 

 

 

int main()

{

int *st, *h, *de;
//定义指针*st,*h,*de

string *nam;

string name;

cout << "输入你的游戏角色名:________\b\b\b\b\b\b\b\b";

getline(cin,name);

shuxing player = { name,10,100,0 };
//初始化player属性为str=10,hp=100,def=0

nam = &player.name;

st = &player.str; //指针st 为player的的str的内存地址

h = &player.hp; //指针h 为player的hp的内存地址

de = &player.def; //指针de为player的def的内存地址

 

shuxing diren1 = { "史莱姆",5,50,0 };
//初始化敌人

string *nam2, name2;

int *st2, *h2, *de2;

nam2 = &diren1.name;

st2 = &diren1.str;

h2 = &diren1.hp;

de2 = &diren1.def;

battle (nam, st, de, h, nam2, st2, de2, h2);

 

system("pause");

return 0;

 

}

 

void battle(string*nam, int*st, int*de, int*h, string*nam2, int*st2, int*de2, int*h2)

{

system("cls");

int a = *st;

int b = *de;

int c = *h;

int d = *h2;

cout << "勇士 " << *nam << " 遇见一个敌人:" << *nam2 << endl;

cout << "——————————" << endl;

cout << "你的属性为:" << endl;

cout << "攻击力:" << *st << endl;

cout << "防御力:" << *de << endl;

cout << "生命值:" << *h << endl;

cout << "——————————" << endl;

cout << "敌人:" << *nam2 << "的属性为" << endl;

cout << "攻击力:" << *st2 << endl;

cout << "防御力:" << *de2 << endl;

cout << "生命值:" << *h2 << endl;

cout << "——————————" << endl;

int mov1 = 0;
//初始化move为敌人行动回合数

unsigned int change = 0;
//初始化主角的选项

while (*h2 > 0)

{

cout << "请选择你的行动:\n1.攻击\n2.防御" << endl;

cin >> change;

cout << endl;

if (change > 2) { cout << "选择错误,请重新选择...";cin >> change; cout << endl;}

if (change == 0) { cout << "选择错误,请重新选择...";cin >> change; cout << endl;}

if (change == 1)

{

mov1 = mov1 + 1;

if (*st <= *de2) { cout << "你的攻击无法攻破对方防御,对方没有损失血量。"<< endl; }

else

{

*h2 = *h2 - *st + *de2;

cout << "你的攻击对" << *nam2 << "造成了" << *st - *de2 << "点伤害。" << *nam2 << "还剩下" << *h2 << "点生命。" << endl;

}

if (*st2 <= *de) { cout << "敌人的攻击无法攻破你的防御,你没有损失血量。" << endl;}

else

{

*h = *h - *st2 + *de;

cout << *nam2 << "的攻击对你造成了" << *st2 - *de << "点伤害。你还剩下" << *h << "点生命" << endl;

}

if (mov1 == 3)

{

mov1 = 0;

*h = *h - *st2 - *st2;

cout << *nam2 << "发动的追加攻击,对你造成了" << *st2 + *st2 << "点伤害。你还剩下" << *h << "点生命" << endl;

}

cout << endl;

}

if (change == 2)

{

mov1 = mov1 + 1;

if (*st2 <= (*de * 2 + 5)) { cout << "敌人的攻击无法攻破你的防御,你没有损失血量。" << endl; }

else

{

*h = *h - *st2 + (*de * 2 + 5);

cout << *nam2 << "的攻击对你造成了" << *st2 - (*de * 2 + 5) << "点伤害。你还剩下" << *h << "点生命" << endl;

}

if (mov1 == 3)

{

mov1 = 0;

if ((*st2 * 2) <= (*de * 2 + 10)) { cout << "敌人发动了追加攻击,但并未对你造成任何伤害" << endl; }

else

{

*h = *h - (*st2 * 2) + (*de * 2 + 10);

cout << *nam2 << "发动的追加攻击,对你造成了" << (*st2 * 2) - (*de * 2 + 10) << "点伤害。你还剩下" << *h << "点生命" << endl;;

}

}

cout << endl;

}

}

cout << "恭喜你,勇士!你成功击杀了" << *nam2 << endl;

*h = c + 0.2*d;

*st = a + 0.5*(*st2);

*de = b + 1 + 0.5*(*de2);

cout << "你获得血量增长" << 0.2*d << "点";

cout << "你获得攻击力增长" << 0.5*(*st2) << "点";

cout << "你获得防御力增长" << 1 + 0.5*(*de2) << "点";

cout << "————————————" << endl;

cout << "你目前属性为:" << endl;

cout << "攻击力:" << *st << endl;

cout << "防御力:" << *de << endl;

cout << "生命值:" << *h << endl;

}

时间: 2024-08-01 23:41:02

(五十六)写了一个小的对战程序的相关文章

Ruby on rails开发从头来(五十六)- ActiveRecord基础(一对多关联关系)

一对多关联可以使我们表示一组对象,例如,一个order可以包含有任意多个line item,在数据库中,所有的line item记录都通过外键关联到特定的order. 在Active Record中,通过在父对象中的has_many来定义到子对象的关联,在子对象中使用belongs_to来指定父对象.我们已经在上一篇中了解了belongs_to声明,实际上,在一对多的情况下,和一对一是相同的,所以我们来了解has_many声明. 开发从头来(五十六)- ActiveRecord基础(一对多关联关

五十六、 NT网卡和Novell网卡互用_网络冲浪

五十六. NT网卡和Novell网卡互用  热点网络     最近为一家电脑培训中心建立一个无盘NT教学网,由于NT无盘工作站上的网卡有着严格的要求:网卡的卡号(Adapter ID,也就是Node Address,共占12个字节)的前6个字符,必须是以0020AF或00608C开头, 且网卡上必须安装RPL(Remote Initial Program Load)的方式运行且支持NT的Boot Rom(其中记录着与NT通信的程序)才能为NT远程启动服务器所标识.我们建造的NT教学网上的工作站用

我自已用java写了一个小系统,但是在输出时TextArea中的文本不能复制是什么问题?

问题描述 我自已用java写了一个小系统,但是在输出时TextArea中的文本不能复制是什么问题? 我自已用java写了一个小系统,但是在输出时TextArea中的文本不能复制是什么问题? 最多只能复制五个字符 一下是部分代码: //声明部分 JTextArea outputText =new JTextArea(); outputText.setLocation(200,350); outputText.setFont(new Font("",1,15)); outputText.s

音频-我用java写了一个小游戏,想插入背景音乐但不太会,求指教

问题描述 我用java写了一个小游戏,想插入背景音乐但不太会,求指教 package text; import java.io.*; import javax.sound.sampled.*; public class text { public static void main(String[] args) { // TODO Auto-generated method stub //创建一个实例 AePlayWave apw = new AePlayWave("G:\照片\Sleep Awa

用ssh写的一个小的登陆网页老报这个错是什么原因?怎么解决?新手求助!请多多帮助!

问题描述 用ssh写的一个小的登陆网页老报这个错是什么原因?怎么解决?新手求助!请多多帮助! 2015-9-18 13:15:20 org.apache.catalina.core.AprLifecycleListener init信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.l

2010年写的一个小工具发现原来只需一行命令即可!

 2010年写的一个小工具发现原来只需一行命令即可! 时间过得很快,转眼间2016年下半年了, 2010年写过一个小工具:http://blog.csdn.net/yangzhenping/article/details/5333184 ping一个网段的cmd程序  http://download.csdn.net/source/2084490 今天发现只要在cmd命令行工具中输入: FOR /L %i IN (1,1,254) DO ping -n 1 192.168.1.%i 即可.

C#写的一个串口通信的窗体程序,运行几个小时就出错,提示“操作已超时”或“已停止工作”,请问怎么解决

问题描述 C#写的一个串口通信的窗体程序,运行几个小时就出错,提示"操作已超时"或"已停止工作",请问怎么解决?求高手解答 解决方案 解决方案二:用日志记录出错信息以及出错的位置,然后再具体分析原因解决方案三:看下你做了一些什么操作解决方案四:就是直接打开串口接收数据,并将一些特定的语句写入文件.就这样运行一段时间就出错了.解决方案五:能贴代码吗关键是报什么错解决方案六: 解决方案七:麻烦帮忙看看怎么回事,谢谢了解决方案八:把有可能会抛异常的点,都放到trycatc

一个小语言的词法分析程序

前些天写了个小语言的词法分析程序,因为前些天在VC知识库看到一个pascal词法分析的程序,觉得写得挺复杂的.其实词法分析程序的原理都是一样的,所以我想只要搞明白了简单的词法分析程序,再写复杂的就不难了,无非是多加几个关键字,多写几个条件判断语句而已.词法分析是编译程序的基础,也是最简单的.好,现在让我们看程序吧. 先让我们看看这个小语言的文法吧. G[<程序>]: <程序>∷=<程序首部>:<分程序>. <程序首部>∷=program<标

初学java,自己用java写了一个简单的注册登录程序,没报错但有问题,希望能帮忙指点。

问题描述 初学java,自己用java写了一个简单的注册登录程序,没报错但有问题,希望能帮忙指点. import java.util.Scanner; class Yanzheng{ private String n; private String p; public void setNa(String na){ this.n = na; } public void setPa(String pa){ this.p = pa; } public String getNa(){ return n;