ま総研2000(まどの総合研究所ver.5.1)

みんながみんなその物事に興味があると思っちゃいけないよという精神で綴る備忘録

攻撃と防御を繰り返すものを作り始める C言語適当練習日記 第10回

   

構造体の扱いをちょっとやってみたいので、敵を攻撃することで相手のHPが減ったり、自分が攻撃を受けることで、自分のHPが減る的なものを作ってみることにする。

なんとなくの構想程度しか書いてないけれども、とりあえずはこの方向で。

[c language="++"]// shugyouattacker.hは自作ヘッダファイル。

#define PLAYER_MAX 3 // 一応3にしたけれども、これはかなり適当。

struct people{
char *name; //名前
int hp; // 現在のHP
int hpmax; // HPの最大値
int normal_ap; // 物理攻撃力
int magic_ap; // 魔法攻撃力
int esp_ap; // 超能力攻撃力
int normal_ac; // 物理防御力
int magic_ac; // 魔法防御力
int esp_ac; // 超能力防御力
}player[PLAYER_MAX];[/c]

[c language="++"]// ShugyouAttacker.cppはHPの減らし合いのあれのメインが入っている
/*
流れ的には、自分と敵のデータを読み込み。
自分先制で、物理攻撃と魔法と超能力のどれかを選択。
相手も3タイプどれを防御するかでダメージが大きくなったり、
小さくなったりするというシステムのものを作りたい。
*/
#include <stdio.h>
#include "shugyouattacker.h"

int main (void){

// 自分のデータ。後にファイル読み込みでやる
player[0].name = "自分";
player[0].hpmax = 10;
player[0].hp = 10;
player[0].normal_ap = 5;
player[0].magic_ap = 5;
player[0].esp_ap = 3;
player[0].normal_ac = 3;
player[0].magic_ac = 4;
player[0].esp_ac = 2;

// 相手のデータ。後にファイル読み込みでやる
player[1].name = "敵1";
player[1].hpmax = 9;
player[1].hp = 9;
player[1].normal_ap = 4;
player[1].magic_ap = 4;
player[1].esp_ap = 4;
player[1].normal_ac = 2;
player[1].magic_ac = 2;
player[1].esp_ac = 2;

// 自分と敵の状況の表示、これは後に関数にする。
for (int i=0; i<2; i++){
printf("%s:HP:%2d/%2d(現在値/最大値)物:%2d/%2d 魔:%2d/%2d 超:%2d/%2d(攻撃/防御)\n",
player[i].name,player[i].hp,player[i].hpmax,player[i].normal_ap,player[i].normal_ac,
player[i].magic_ap, player[i].magic_ac,player[i].esp_ap,player[i].esp_ac);
}
/* 自分のターンで何をするか選択、敵は何について警戒(防御)するか選択したいけれど、
  アルゴリズムうんぬんは今回は特に考えない。適当にsrand()やrand()で判断。
式は単純に「攻撃-防御」の値が、敵へのダメージポイントになる。ただし1以下は1で固定。
ダメージ判定終了後、互いに選んだものの能力とHPMAXが1ポイントアップで攻守交代。

能力アップ後、どちらかのHPが零になっていたら終了、勝ち負け判定しておしまいというものを作る。
できれば、その修行の結果、自分と敵ともにセーブできるシステムならありがたい。
*/

return 0;
}[/c]

 - C言語練習