質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

Q&A

4回答

9236閲覧

「'('が必要です」とたくさん出ます><

choko103478

総合スコア6

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

0グッド

0クリップ

投稿2018/06/06 05:56

編集2022/01/12 10:55

イメージ説明### 前提・実現したいこと

何故エラーが出るのか分かりません;
投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;
友達から貰ったコードなのですが、諸事情で連絡が取ることができないので助けて頂けると幸いです。

発生している問題・エラーメッセージ

何故エラーが出るのか分かりません; 投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;

該当のソースコード

#include"DxLib.h" //キャラクタ型宣言 struct CharaData { int x; int y; int ghandle; int life; int image_w; int image_h; int bounds_w; int bounds_h; }; //プロトタイプ宣言 void MyMove(int movable); void JitamaMove(void); void TekiMove(void); int IsAtari(CharaData, CharaData); int AtariHantei(void); void GameOver(void); void GameClear(void); void ChaInit(void); //構造化設定 struct CharaData jikidata; struct CharaData jitama[7]; struct CharaData tekidata[5]; int trigger = 0; //メインプログラム int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC) { ChangeWindowMode(true); //ウィンドウモードで起動 if (DxLib_Init() == -1) return -1; //DXライブラリの初期化 ChaInit(); SetDrawScreen(DX_SCREEN_BACK); while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { ClsDrawScreen(); //画面消去 MyMove(true); JitamaMove(); TekiMove(); GameOver(); GameClear(); if (AtariHantei() == 1)break; ScreenFlip(); } DxLib_End(); return 0; }; //キャラクタ初期設定 void ChaInit(void) { //自分キャラクタの初期設定 jikidata.ghandle = LoadGraph("自キャラ.bmp"); jikidata.x = 0; jikidata.y = 0; jikidata.image_w = 48; jikidata.image_h = 32; jikidata.bounds_w = 32; jikidata.bounds_h = 20; //自弾の初期設定 int g = LoadGraph("自弾.bmp"); for (int i = 0; i<7; i++) { jitama[i].ghandle = g; jitama[i].image_w = 64; jitama[i].image_h = 16; jitama[i].bounds_w = 48; jitama[i].bounds_h = 12; } //敵キャラクタデータの初期化 int k = LoadGraph("敵キャラ.bmp"); for (int i = 0; i<5; i++) { tekidata[i].ghandle = k; tekidata[i].life = 1; tekidata[i].x = GetRand(100) + 500; tekidata[i].y = GetRand(448); tekidata[i].image_w = 32; tekidata[i].image_h = 32; tekidata[i].bounds_w = 20; tekidata[i].bounds_h = 20; } } //自キャラクタ移動関数 void MyMove(int movable) { int key = GetJoypadInputState(DX_INPUT_KEY_PAD1); if (key&PAD_INPUT_UP) jikidata.y = jikidata.y - 4 * (movable == TRUE); if (key&PAD_INPUT_DOWN) jikidata.y = jikidata.y + 4 * (movable == TRUE); if (key&PAD_INPUT_LEFT) jikidata.x -= 4 * (movable == TRUE); if (key&PAD_INPUT_RIGHT)jikidata.x += 4 * (movable == TRUE); if (jikidata.x<0) jikidata.x = 0; if (jikidata.x>640 - 32) jikidata.x = 640 - 32; if (jikidata.y<0) jikidata.y = 0; if (jikidata.y>480 - 32) jikidata.y = 480 - 32; DrawGraph(jikidata.x, jikidata.y, jikidata.ghandle, TRUE); } //自キャラクタ弾の移動関数 void JitamaMove(void) { int key = GetJoypadInputState(DX_INPUT_KEY_PAD1); if ((key&PAD_INPUT_A) && (trigger == 0)) { for (int i = 0; i<7; i++) { if (jitama[i].life == 0) { jitama[i].life = 1; jitama[i].x = jikidata.x + 24; jitama[i].y = jikidata.y + 0; break; } } trigger = 10; } if (trigger>0) trigger = trigger - 1; for (int i = 0; i<7; i++) { if (jitama[i].life>0) { jitama[i].x = jitama[i].x + 10; DrawGraph(jitama[i].x, jitama[i].y, jitama[i].ghandle, TRUE); if (jitama[i].x>640) jitama[i].life = 0; } } } //敵キャラクタ移動関数 void TekiMove(void) { for (int i = 0; i<5; i++) { if (tekidata[i].life >0) { int teki_y = GetRand(40) - 20; int teki_x = GetRand(4) - 1; tekidata[i].x = tekidata[i].x - teki_x; tekidata[i].y = tekidata[i].y - teki_y; if (tekidata[i].x<-32) tekidata[i].x = -32; if (tekidata[i].y<0) tekidata[i].y = 0; if (tekidata[i].y>480 - 32) tekidata[i].y = 480 - 32; DrawGraph(tekidata[i].x, tekidata[i].y, tekidata[i].ghandle, TRUE); } } } //当たり判定チェック int IsAtari(CharaData a, CharaData b) { int retval = 0; int ax1 = a.x + (a.image_w - a.bounds_w) / 2; int ay1 = a.y + (a.image_h - a.bounds_h) / 2; int ax2 = a.x + (a.image_w + a.bounds_w) / 2; int ay2 = a.y + (a.image_h + a.bounds_h) / 2; int bx1 = b.x + (b.image_w + b.bounds_w) / 2; int by1 = b.y + (b.image_h + b.bounds_h) / 2; int bx2 = b.x + (b.image_w + b.bounds_w) / 2; int by2 = b.y + (b.image_h + b.bounds_h) / 2; if ((ax1<bx2) && (bx1<ax2) && (ay1<by2) && (by1<ay2)) { retval = 1; } return (retval); } //当たり判定メイン int AtariHantei() { for (int i = 0; i<50; i++) { if (tekidata[i].life>0) { if (IsAtari(jikidata, tekidata[i]) == 1) return(1); for (int j = 0; j<3; j++) { if (jitama[j].life>0) { if (IsAtari(jitama[j], tekidata[i]) == 1) { jitama[j].life = 0; tekidata[i].life = 0; } } } } } return (0); } //ゲームオーバーチェック関数 void GameOver(void) { MyMove(FALSE); for (int i = 0; i<5; i++) { if (tekidata[i].x<64) { int col = GetColor(255, 0, 0); SetFontSize(100); SetFontThickness(9); ChangeFontType(DX_FONTTYPE_EDGE); int x = 320 - GetDrawStringWidth("GAMEOVER", 8) / 2; DrawString(x, 160, "GAMEOVER", col); } } } //ゲームクリアチェック関数 void GameClear(void) { int count = 0; for (int i = 0; i<5; i++) { if (tekidata[i].life<1) { count++; } } if (count >= 5) { int col = GetColor(255, 255, 0); SetFontSize(100); SetFontThickness(9); ChangeFontType(DX_FONTTYPE_EDGE); int x = 320 - GetDrawStringWidth("GAMECLEAR", 8) / 2; DrawString(x, 160, "GAMECLEAR", col); } }

補足情報(FW/ツールのバージョンなど)

VisualStudio 2015

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yumetodo

2018/06/06 06:01

コードは修飾記法があるのでそれで書いてください、読めない。あとエラー内容を追記してください
ttyp03

2018/06/06 06:20

エラーの内容がわかりませんのでご提示願います。
dit.

2018/06/06 06:36

既に指摘をされていますが、teratailではコード等を見やすくするための仕組みがあります。コードの部分をすべて選択して<code>ボタンを押してください。パソコンからの編集の場合、右側にプレビューが出ているはずですので、確認しながら編集してください。エラーが出ているということですが、エラーメッセージも要約することなくそのまま記載してください。
choko103478

2018/06/06 07:04

なるほどです!ありがとうございます><
MMashiro

2018/06/06 07:23

本文にエラー内容を具体的に示してください。またタイトルがひと目で内容が分かりにくいのでわかりやすいタイトルをおすすめします https://teratail.com/help/question-tips
MMashiro

2018/06/06 08:22

ビルドしてみましたが特にコンパイルエラーは発生せずにビルドが通りました。エラーが出ている画面のスクリーンショット等は貼れないでしょうか。また開発環境のバージョンなどの環境情報の追記もお願いします
ooa

2018/06/06 08:38

こちらではビルド通りました。「サンプルプログラム実行用フォルダ」内のお手持ちのVisualStudioバージョンのソリューションを立ち上げて、その中のtest.cppを書き換えて(全部上書き)して試してみたらどうなりますか? あとエラー内容はコピペで本文に載せてください。長ければ最初の10行くらいでも、無いよりは良いです。
choko103478

2018/06/06 08:48

サンプルプログラムに上書きで実行するとビルド通りました!何が原因なんでしょうか。。
ooa

2018/06/06 09:53

ヘルプのhelp/dxuse.htmlを参考に、プロジェクトを作り直したほうが速いかもしれません。。
choko103478

2018/06/06 10:09

なるほどです!ありがとうございます!
choko103478

2018/06/06 10:50

ooaさんのご回答でエラーの解決はしましたが自分でプロジェクトを立ち上げるとどうもうまくいきません。 エラーが再発します。 サンプルプログラム内でのみビルド通ります。
MMashiro

2018/06/06 12:21

プロジェクトを新しく立ち上げてもエラーは発生しますか?
choko103478

2018/06/06 12:48 編集

エラーでます。ですが、新しくプロジェクトフォルダ内にDxライブラリのプロジェクトに追加すべきファイルとToolを入れるとビルド成功します。それにその方法で実行してもDebugフォルダが生成されません。
guest

回答4

0

ソースコードの文字コードはUTF-8 with BOMにしましょう。

投稿2018/06/06 16:02

yumetodo

総合スコア5850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

新しく立ち上げる際にooaさんの補足コメント通りに作成しましたか?
VS2015だとWeb上で手順を確認できます。
下記手順通りにしないと動かないので再度プロジェクトの作り方から確認お願いします
http://dxlib.o.oo7.jp/use/dxuse_vscom2015.html

投稿2018/06/06 13:15

MMashiro

総合スコア2378

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

使用しているコンパイラの種別(VisualStudioのなにか?)を教えていただけますか。

また、ソースコードの文字コードはUTF-8(BOMなし)ではないでしょうか。
2013あたりのVisual Studioで、BOMなしのUTF-8のソースコードが適切に日本語を読み込めず、次の行を壊す、という現象に遭遇したことがあります。

投稿2018/06/06 08:47

編集2018/06/06 08:51
kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

choko103478

2018/06/06 08:57

VisualStudio 2015を使っていて文字コードは日本語です!
kazto

2018/06/06 08:58

文字コードの意味を取り違えてらっしゃいます。 Shift_JISとか、UTF-8とか、ご存じないでしょうか。
kazto

2018/06/06 09:03

メニューの「ファイル」→「保存オプションの詳細設定...」で現在のエンコードを確認できます。
choko103478

2018/06/06 09:03

日本語(シフト_JIS)です。
kazto

2018/06/06 09:08

なるほど、おそらくお友達からソースをもらった段階ではUTF-8で、それをそのままビルドした状態では例に挙げた状態でエラーとなり、いちど貼りなおした状態でShift_JISになったので正常にビルドできるようになった、ということになりますかね。
choko103478

2018/06/06 09:16

Dxライブラリのサンプルプログラムなら正常にビルド通るんですが、自分でプロジェクト立ち上げてビルドするとエラーになります。。
kazto

2018/06/06 09:19

サクラエディタなどの文字コードの判別が可能なテキストエディタをインストールすることはできますか? それでそれぞれのソースを見てみれば、分かりやすいかと思います。
choko103478

2018/06/06 09:37

サクラエディタで確認したところどちらもSJISでした。
kazto

2018/06/06 09:51

どちらも、とは、どれを指しますか? 今、登場人物は三人です。 - ビルドが通らないソース - コピペしてビルドが通るようになったソース - DXライブラリのサンプルソース まぁ、ビルド通るようになったのなら気にすることでも無いとは思うのですけど、はっきりさせといたほうが気分がスッキリしますね。
choko103478

2018/06/06 10:09

ビルドが通らないソース コピペしてビルドが通るようになったソース です!
choko103478

2018/06/06 10:23

ご回答ありがとうございました!
choko103478

2018/06/06 10:49

ooaさんのご回答でエラーの解決はしましたが自分でプロジェクトを立ち上げるとどうもうまくいきません。 エラーが再発します。 サンプルプログラム内でのみビルド通ります。
choko103478

2018/06/06 10:49

すみません。 打つところ間違えました。
guest

0

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)

の関数の終わりの閉じカッコにセミコロンついてる


ではエラーでないですねー

おおかた、ヘッダファイルで関数宣言のセミコロン忘れとか、Define でカッコ忘れとかじゃね?

投稿2018/06/06 08:30

編集2018/06/06 08:50
y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

choko103478

2018/06/06 08:58

Dxライブラリのサンプルプログラムでビルドすると通るんですよね。。
y_waiwai

2018/06/06 09:01

いまきがついたけど、 最初の行の #define のあとにスペースいれてみよう
y_waiwai

2018/06/06 09:07

int IsAtari(CharaData, CharaData); これ、 int IsAtari(struct CharaData, struct CharaData); でしょ
y_waiwai

2018/06/06 09:12

あと、TRUEとFALSEの定義を確認してみれ。 って、これぐらいかなあ まあしかし、VisualStudioならソース画面でエラー出してくれるだろうからこれでもないか
choko103478

2018/06/06 10:23

ご回答ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問