ねらいとしては画面(0,0)座標におはようの文字と画像が現れるようにしたかったです。
しかし、「エラー 1 error LNK2005: "char * name" (?name@@3PADA) は既に main.obj で定義されています。 E:\ダウンロード\GameProg_2012 (1)\gameprog2012(練習)\player.obj GameProg_2012
」というエラーが出ました。
これができればゲームでも敵の位置やスコアなどあらゆる情報を初期化用cpp1つにまとめることができると思ったのですが。。。
なぜこの書き方がまずいのか解答よろしくお願いします。また、初期値設定は今後どういった形でまとめたらいいのかも教えてもらえればうれしいです
main.cpp
#include "DxLib.h"
#include "Player.h"
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);
Player_Initialize(); // 初期化
while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0){
Player_Update(); //計算
Player_Draw(); //描画
DrawFormatString(0,0, GetColor(255, 255, 255),name );
}
Player_Finalize(); // 終了処理
DxLib_End();
return 0;
}
#include "DxLib.h"
#include "keyboard.h"
#include"player.h"
// このファイル内でしか使えないグローバル変数
static int m_Image; //画像ハンドル
static int m_y; //y座標
// 初期化をする
void Player_Initialize(){
char name[100] = "おはよう";
m_Image = LoadGraph("画像/キャラクタ01.png");
m_y = 0;
}
// 動きを計算する
void Player_Update(){
if (Keyboard_Get(KEY_INPUT_UP)>0)
{
m_y--;
}
if (Keyboard_Get(KEY_INPUT_DOWN)>0)
{
m_y++;
}
}
// 描画する
void Player_Draw(){
DrawGraph(0, m_y, m_Image, TRUE);
}
// 終了処理をする
void Player_Finalize(){
DeleteGraph(m_Image);
}