レベルUP方法
Posted: 2012年12月12日(水) 14:55
こんにちは
ドラクエのようなプログラムをC言語で作りたいのですが
経験値を得てレベルをあげる方法がわかりません。
#include<stdio.h>
#define TRUE 1
struct status{
char name[13];
int level;
int hp;
//int mp;
int offense;
int defense;
int money;
int exp;
};
struct status monster_data[]={{"スライム",1,10,1,1,3,5},{"小鳥",5,100,3,4,5,10},{"怪獣",50,500,30,10,10,50},{"ラスボス",100,999,100,100,100,1000}};
char message[80];
void print_message(char message[]){
printf("%s\n",message);
sleep(1);
}
int attack(int offense_power,int defense_power,char offense_name[],char defense_name[]){
int attack;
attack=offense_power-defense_power;
if(attack<0)attack=0;
sprintf(message,"%sの攻撃\n%sに%dのダメージを与えた",offense_name,defense_name,attack);
print_message(message);
return attack;
}
int main(){
struct status player ={"勇者 ",1,100,20,10,0};
struct status monster;
int number;
srand((unsigned int)time(NULL));//乱数の初期化
while(player.hp>0){
number=rand()%3;
//敵情報のコピー
monster=monster_data[number];
strcpy(monster.name,monster_data[number].name);
sprintf(message,"%sが現れた!",monster.name);
print_message(message);
//戦闘開始(面倒なので必ず勇者から)
while(TRUE){
monster.hp-=attack(player.offense,monster.defense,player.name,monster.name);
if(monster.hp<=0){
sprintf(message,"%sは%sを倒した\n%dゴールド見つけて、経験値を%d得た",player.name,monster.name,monster.money,monster.exp);
print_message(message);
player.money=+monster.money;
player.exp=+monster.exp;
if(player.exp==10 || ){
player.level++;
break;
}
player.hp-=attack(monster.offense,player.defense,
monster.name,player.name);
if(player.hp<=0){
sprintf(message,"%sは%sに倒されてしまった",
player.name,monster.name);
print_message(message);
break;
}
}
}
return(0);
}
OSはUbuntuです。
回答よろしくお願いします。
ドラクエのようなプログラムをC言語で作りたいのですが
経験値を得てレベルをあげる方法がわかりません。
#include<stdio.h>
#define TRUE 1
struct status{
char name[13];
int level;
int hp;
//int mp;
int offense;
int defense;
int money;
int exp;
};
struct status monster_data[]={{"スライム",1,10,1,1,3,5},{"小鳥",5,100,3,4,5,10},{"怪獣",50,500,30,10,10,50},{"ラスボス",100,999,100,100,100,1000}};
char message[80];
void print_message(char message[]){
printf("%s\n",message);
sleep(1);
}
int attack(int offense_power,int defense_power,char offense_name[],char defense_name[]){
int attack;
attack=offense_power-defense_power;
if(attack<0)attack=0;
sprintf(message,"%sの攻撃\n%sに%dのダメージを与えた",offense_name,defense_name,attack);
print_message(message);
return attack;
}
int main(){
struct status player ={"勇者 ",1,100,20,10,0};
struct status monster;
int number;
srand((unsigned int)time(NULL));//乱数の初期化
while(player.hp>0){
number=rand()%3;
//敵情報のコピー
monster=monster_data[number];
strcpy(monster.name,monster_data[number].name);
sprintf(message,"%sが現れた!",monster.name);
print_message(message);
//戦闘開始(面倒なので必ず勇者から)
while(TRUE){
monster.hp-=attack(player.offense,monster.defense,player.name,monster.name);
if(monster.hp<=0){
sprintf(message,"%sは%sを倒した\n%dゴールド見つけて、経験値を%d得た",player.name,monster.name,monster.money,monster.exp);
print_message(message);
player.money=+monster.money;
player.exp=+monster.exp;
if(player.exp==10 || ){
player.level++;
break;
}
player.hp-=attack(monster.offense,player.defense,
monster.name,player.name);
if(player.hp<=0){
sprintf(message,"%sは%sに倒されてしまった",
player.name,monster.name);
print_message(message);
break;
}
}
}
return(0);
}
OSはUbuntuです。
回答よろしくお願いします。