ページ 11

読み込めないのかどうなのか

Posted: 2013年6月07日(金) 01:11
by ぼると
はじめまして、学校にてC言語を学び始めて間もないぼるとと申します。

C言語を少しずつ勉強してきて、先日「今まで覚えた内容である物を作ろう」と発案し、さっそく取組ました。

作る物は「ステータスのシミュレーター」なるもので、予め用意した基本ステータスに武器や防具などを付けて、付けた装備に応じてステータスが変動するような小さいシステムです。

また、せっかくなので「ヘッダーファイル」を利用して出来るだけmain.cppに書くプログラムを減らそうと考えました。

まずmain.cppに予め用意した装備を選ぶ処理を置こうと考え、その処理をヘッダーにまとめて配置してみたのですが、いざコンパイルするとなると書いたはずの処理がすっとんでしまいました。

コンパイルに成功してるということは多分文法のミスは無いと思われますが、書き方が間違ってるのでしょうか・・・

今自分が知りたいことは、「どうすればちゃんと処理を実行させられるのか」ということです。

使用しているコンパイラは「visual studio 2010」です


よろしくお願いします。

↓自分が書いたソースコード

main.cpp

コード:

#include <stdio.h>
#include "Hu_struct.h"
#include "weapon.h"

 struct Hu_status1 Hunter1 = {1, 208, 100, 90, 83, 74, 96, 90, 72, 75};


int main(){

	 printf("武器はどうする?");

	 void sword_text();

	printf("LV/%d\nHP/%d\nPP/%d\n打撃力/%d\n射撃力/%d\n法撃力/%d\n技量/%d\n打撃防御力/%d\n射撃防御力/%d\n法撃防御力/%d\n",Hunter1.level,Hunter1.HP,Hunter1.PP,Hunter1.strike_power,Hunter1.shoot_power,Hunter1.magic_power,Hunter1.skill,Hunter1.strile_defience,Hunter1.shoot_defience,Hunter1.magic_defience);
}
Hu_status.h

コード:

#ifndef _HU_STURUCT_H

#define _HU_STURUCT_H

	struct Hu_status1{
	int level;
	int HP;
	int PP;
	int strike_power;
	int shoot_power;
	int magic_power;
	int skill;
	int strile_defience;
	int shoot_defience;
	int magic_defience;
};

#endif
weapon.h

コード:

#ifndef _WEAPON_H

#define _WEAPON_H

void sowrd_text(int i){

	printf("装備する武器は?\n");
	printf("0:素手\n");
	printf("1:ソード\n");
	printf("2:アルバソード\n");
	printf("3:ヴィタソード\n");
	printf("4:ギガッシュ\n");
	printf("5:アルバギガッシュ\n");
	printf("6:ヴィタギガッシュ\n");
	printf("7:ブレイカー\n");
	printf("8:アルバブレイカー\n");
	printf("9:ヴィタブレイカー\n");
	printf("10:クレイモア\n");
	printf("11:アルバクレイモア\n");
	printf("12:ヴィタクレイモア\n");
	printf("13:キャリバー\n");
	printf("14:アルバキャリバー\n");
	printf("15:ヴィタキャリバー\n");
	printf("16:コートエッジ\n");
	printf("17:タルナーダ\n");
	scanf("%d", &i);
}

#endif

PS:よくこの掲示板を拝見させてもらっているのですが、掲示板に記載されるソースコードが何故か全部横一列に統一されてしまうのですが・・・

Re: 読み込めないのかどうなのか

Posted: 2013年6月07日(金) 03:08
by 超絶右留斗羅天才プログラマー
main.cppの12行目の関数を見ると、

void sword_text();

となっていますので、先頭のvoidを取り外します。

その後、sowrd_text関数にはiという引数を渡す関数になっておりますので、
int i = 0;
と宣言し、
sowrd_text(i);
と引数を渡してください。

これでsowrd_text関数内のscanfの処理まで通るようになります!

また疑問点が湧きましたら、遠慮なく教えてくださいヽ(*´∀`)ノ

main.cpp

コード:

#include <stdio.h>
#include "Hu_status.h"
#include "weapon.h"
 
 struct Hu_status1 Hunter1 = {1, 208, 100, 90, 83, 74, 96, 90, 72, 75};
 
 
int main(){
 
     printf("武器はどうする?");
 
	 int i = 0;
	 sowrd_text(i);
 
    printf("LV/%d\nHP/%d\nPP/%d\n打撃力/%d\n射撃力/%d\n法撃力/%d\n技量/%d\n打撃防御力/%d\n射撃防御力/%d\n法撃防御力/%d\n",Hunter1.level,Hunter1.HP,Hunter1.PP,Hunter1.strike_power,Hunter1.shoot_power,Hunter1.magic_power,Hunter1.skill,Hunter1.strile_defience,Hunter1.shoot_defience,Hunter1.magic_defience);

}

Re: 読み込めないのかどうなのか

Posted: 2013年6月07日(金) 08:53
by みけCAT
ぼると さんが書きました:PS:よくこの掲示板を拝見させてもらっているのですが、掲示板に記載されるソースコードが何故か全部横一列に統一されてしまうのですが・・・
おそらくIEをお使いですね?
そんなブラウザを使うのはやめて、Firefoxを使いましょう!

Re: 読み込めないのかどうなのか

Posted: 2013年6月07日(金) 14:27
by 初級者
ヘッダーファイルに関数の実体を書くのは
本当に適切なのか? と、個人的には思います。

Re: 読み込めないのかどうなのか

Posted: 2013年6月07日(金) 16:40
by usao
コードを見るといろいろとつっこみどころはあるでしょうが,
>今自分が知りたいことは、「どうすればちゃんと処理を実行させられるのか」ということです。
と,わざわざ強調されているので,
超絶右留斗羅天才プログラマーさんが回答された内容以上のものを現在は求めていない のではないでしょうか.

Re: 読み込めないのかどうなのか

Posted: 2013年6月07日(金) 16:44
by ISLe
ぼると さんが書きました:PS:よくこの掲示板を拝見させてもらっているのですが、掲示板に記載されるソースコードが何故か全部横一列に統一されてしまうのですが・・・
IE10を使っている場合は、互換表示にしてください。
アドレスバーの右端にある折れ線で分割された縦長の長方形のアイコンをクリックして青色の状態にします。

逆に互換表示だと投稿画面のトピック一覧の引用ボタンがスクロールしないなど不具合もありますので適宜切り替えてください。

たぶんIE10が糞なのではなく過去のIEとの互換性の問題かと思われます。

Re: 読み込めないのかどうなのか

Posted: 2013年6月07日(金) 18:08
by ぼると
本件以外の事でも教えてくれてありがとうございました。とりあえず処理を通すことは出来ました。

後ソースコードについてなんですが、まだプログラムに関しては自分はひよっこなので、どうやって効率的に組むことが出来るかさっぱり分からない状態です。とりあえず今は「学んだことだけで出来るのか?」というのを自分で勝手に挑戦してるだけですので、またそのあたりに関してはまたこの掲示板にお世話になるかもしれません。

皆さん解決策を教えてくれてありがとうございました。