最近想到了用C++写个小时候课间嘴上玩的那种宝可梦游戏,先试写了个demo,只有早期的三个宝可梦和基础招式,感兴趣的朋友可以再自己添加,也没有各种物防特攻数值啥的,等以后会搞图形化界面了再做个复杂的,功能完善的。
玩法就是选择宝可梦和电脑对战,除了攻击还有三次防御的机会,可以完全抵消对面这轮的攻击,增加了一点博弈的感觉(其实和电脑也没啥好博弈的)
上代码
#include<iostream>
#include<windows.h>
#include<ctime>
enum Type {normal,fire,grass,water};//定义招式与pokemon属性
struct Atk//招式结构体
{
char name[20];//招式名
int damage;//伤害
Type type;//属性
int speed;//招式速度
int pp; //招式技能点数量
};
Atk def{"def",0,normal,10,3};//防御
struct pokemon//pokemon结构体
{
char name[30];//名
int hp;//初始血量
int speed;//pokemon本身速度
Type type;//属性
Atk atk1;//招式1到4
Atk atk2;
Atk atk3;
Atk atk4;
int def;//防御点数
};
void initial();
int choose(int);
int AIchoose(int);
int p_choose(int,pokemon);
int AI_choose(int,pokemon);
void duel(pokemon p_pokemon,pokemon AI_pokemmon);
double damage_coeff(Type type1,Type type2);
int main()
{
using namespace std;
int cont=1;//设定循环游戏的flag
while(cont==1)
{
system("cls");//新游戏开始时清屏
//初始化各个招式与pokemon
Atk watergun{"water gun",40,water,2,2};//水枪
Atk quickattack{"quick attack",40,normal,5,3};//电光石火
Atk scratch{"scratch",40,normal,2,8};//抓
Atk bubblebeam{"bubble beam",65,water,1,1};//泡沫光线
Atk razorleaf{"razor leaf",55,grass,3,1};//飞叶快刀
Atk vinewhip{"vine whip",35,grass,4,2};//藤鞭
Atk tackle{"tackle",35,normal,2,10};//撞击
Atk ember{"ember",40,fire,2,1};//火苗
Atk firespin{"fire spin",35,fire,4,2};//火焰旋涡
pokemon bulbasaur{"bulbasaur",200,3,grass,tackle,quickattack,vinewhip,razorleaf,3};//妙蛙种子
pokemon charmander{"charmander",200,2,fire,scratch,quickattack,ember,firespin,3};//小火龙
pokemon squirtle{"squirtle",200,1,water,tackle,quickattack,watergun,bubblebeam,3};//杰尼龟
initial();
pokemon p_pokemon;
pokemon AI_pokemon;
int Num1,Num2;
Num1=choose(Num1);
Num2=AIchoose(Num2);
//确定双方选择的pokemon
switch(Num1)
{
case 1:
p_pokemon=bulbasaur;
break;
case 2:
p_pokemon=charmander;
break;
case 3:
p_pokemon=squirtle;
break;
}
switch(Num2)
{
case 0:
AI_pokemon=bulbasaur;
break;
case 1:
AI_pokemon=charmander;
break;
case 2:
AI_pokemon=squirtle;
break;
}
system("cls");
Sleep(500);
cout <<"You choose "<<p_pokemon.name<<"