蚊を潰すゲームの製作1

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
フローラル

蚊を潰すゲームの製作1

#1

投稿記事 by フローラル » 9年前

 はじめまして。クロックです。来年の文化祭に向けてC++でゲームつくっています。作成中どう対処すればいいかわからないエラーが出てきたのでどなたかご口授願います。
 <環境>Win8.1、VS2013
 <エラー>swatter.hの関数が定義されていない(main.cppで文頭の#include"Face.h"と#include"swatter.h"の順番を入れ替えるとFace.hの関数が定義されなくなります)
 <画像>顔.jpg ハエたたき.png

code
/main.cpp/
#include "DxLib.h"
#include"swatter.h"
#include"Face.h"
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
ChangeWindowMode(FALSE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK); //ウィンドウモード変更と初期化と裏画面設定
S_Initialize();//初期化
Face_Initialize();//初期化
while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0){
S_Update();//計算
Face_Draw();//描画
► スポイラーを表示
S_Draw();//描画
}
S_Finalize();//終了処理
DxLib_End();
return 0;
}
/code
code
/Face.cpp/
#include "DxLib.h"
#include "Face.h"
// このファイル内でしか使えないグローバル変数
static int Handle00; //画像ハンドル
// 初期化をする
void Face_Initialize(){
Handle00 = LoadGraph("画像/顔.jpg");
}
// 描画する
void Face_Draw(){
DrawRotaGraph(325, 250, 3.5, 0, Handle00, TRUE);
}
// 終了処理をする
void Face_Finalize(){
DeleteGraph(Handle00);
}
/code
code
/Face.h/
#pragma once
#ifndef DEF_PLAYER_H //二重include防止
#define DEF_PLAYER_H
// 初期化をする
void Face_Initialize();
// 描画する
void Face_Draw();
// 終了処理をする
void Face_Finalize();
#endif
/code
code
/swatter.cpp/
#include "DxLib.h"
#include "swatter.h"
int Key[256]; // キーが押されているフレーム数を格納する
int x = 320, y = 240;
int Handle01; //画像ハンドル
// キーの入力状態を更新する
int gpUpdateKey(){
char tmpKey[256]; // 現在のキーの入力状態を格納する
GetHitKeyStateAll(tmpKey); // 全てのキーの入力状態を得る
for (int i = 0; i<256; i++){
if (tmpKey != 0){ // i番のキーコードに対応するキーが押されていたら
Key++; // 加算
}
else { // 押されていなければ
Key = 0; // 0にする
}
}
return 0;
}
// 初期化をする
void S_Initialize(){
Handle01 = LoadGraph("画像/ハエたたき.png");
}
// 動きを計算する
void S_Update(){
if (Key[KEY_INPUT_RIGHT] >= 1){
x++;
}
if (Key[KEY_INPUT_DOWN] >= 1){
y++;
}
if (Key[KEY_INPUT_LEFT] >= 1){
x--;
}
if (Key[KEY_INPUT_UP] >= 1){
y--;
}
}
// 描画する
void S_Draw(){
DrawRotaGraph(x, y, 0.05, 0, Handle01, TRUE);
}
// 終了処理をする
void S_Finalize(){
DeleteGraph(Handle01);
}
/code
code
/swatter.h/
#ifndef DEF_PLAYER_H //二重include防止
#define DEF_PLAYER_H
// 初期化をする
void S_Initialize();
// 動きを計算する
void S_Update();
// 描画する
void S_Draw();
// 終了処理をする
void S_Finalize();
#endif
/code

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 蚊を潰すゲームの製作1

#2

投稿記事 by みけCAT » 9年前

日記のコメントでも書かれているように、Face.hとswatter.hで同じDEF_PLAYER_Hを用いてガードをしているのが問題です。
どちらか一方だけの識別子を変えてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: 蚊を潰すゲームの製作1

#3

投稿記事 by Dixq (管理人) » 9年前

先の日記でも書きましたが定義値を書くのが面倒なら
#pragma once
と書いてもよいはずです。
その際
#
から始まる他の行は全て消してください。

クロック
記事: 2
登録日時: 9年前

Re: 蚊を潰すゲームの製作1

#4

投稿記事 by クロック » 9年前

 お騒がせしました。解決しました(^◇^)

閉鎖

“C言語何でも質問掲示板” へ戻る