掲示板の質問リストどうりに質問させてもらいます。
1.自分はゲームが作りたい
2.作ってるプログラミングはこれになります。
(※プログラム中に出てくる名前は変えてあります。)
ヘッダファイルの詳細は数が多いのでここでは省いておきます。
#include "DxLib.h"
#include "紹介.h"
#include "OP.h"
#include "Start.h"
#include "Load.h"
#include "Extra.h"
//______________________________________________________________________________________________________________
int Key[256]; // キーが押されているフレーム数を格納する
// キーの入力状態を更新する
int gpUpdateKey(){
char tmpKey[256]; // 現在のキーの入力状態を格納する
GetHitKeyStateAll( tmpKey ); // 全てのキーの入力状態を得る
for( int i=0; i<256; i++ ){
if( tmpKey[i] != 0 ){ // i番のキーコードに対応するキーが押されていたら
Key[i]++; // 加算
} else { // 押されていなければ
Key[i] = 0; // 0にする
}
}
return 0;
}
//______________________________________________________________________________________________________________
// メニュー項目の表示に必要な構造体を用意する
typedef struct{
int x, y; // 座標格納用変数
char name[128]; // 項目名格納用変数
} MenuElement_t ;
//______________________________________________________________________________________________________________
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
SetMainWindowText("名前(仮)");
ChangeWindowMode(TRUE),DxLib_Init();
//______________________________________________________________________________________________________________
//紹介画像表示
company_P();
//動画再生 ※後からムービーを飛ばせるようにすること
movie();
//______________________________________________________________________________________________________________
// メニュー項目要素を5つ作る
int XT,XY,SizeXA,SizeYB,Cbd,CCR;
GetScreenState( &SizeXA , &SizeYB , &Cbd);
CCR = strlen("エクストラ");
int StrWidth = GetDrawStringWidth( "エクストラ" , CCR ) ;
XT=SizeXA-StrWidth-80;
XY=100;
MenuElement_t MenuElement[5]={
{ XT, XY, "始めから" }, // タグの中身の順番で格納される。
{ XT+20, XY+(50*1), "続きから" },
{ XT+20, XY+(50*2), "エクストラ" },
{ XT+20, XY+(50*3), "しす☆てむ" },
{ XT+20, XY+(50*4), "終了" },
};
int SelectNum = 0; // 現在の選択番号
// while(裏画面を表画面に反映, メッセージ処理, 画面クリア, キー更新)
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && gpUpdateKey()==0 ){
// 計算フェーズ
if( Key[ KEY_INPUT_DOWN ] == 1 ){ // 下キーが押された瞬間だけ処理
SelectNum = ( SelectNum + 1 ) % 5; // 現在の選択項目を一つ下にずらす(ループする)
}
if( Key[ KEY_INPUT_UP ] == 1 ){ // 上キーが押された瞬間だけ処理
SelectNum = ( SelectNum + 4 ) % 5; // 現在の選択項目を一つ上にずらす(逆ループする)
}
if( Key[ KEY_INPUT_DOWN ] == 1 || Key[ KEY_INPUT_UP ] == 1 ){ // 下キーか、上キーが押された瞬間
for( int i=0; i<5; i++ ){ // メニュー項目数である5個ループ処理
if( i == SelectNum ){ // 今処理しているのが、選択番号と同じ要素なら
MenuElement[i].x = XT; // 座標を80にする
} else { // 今処理しているのが、選択番号以外なら
MenuElement[i].x = XT+20;// 座標を100にする
}
}
}
if(Key[ KEY_INPUT_RETURN ]==1){
switch(SelectNum){
case 0:
Start();
case 1:
Load();
break;
case 2:
Extra();
break;
case 3:
goto System;
break;
case 4:
goto END;
}
}
// 描画フェーズ
for( int i=0; i<5; i++ ){ // メニュー項目を描画
DrawFormatString( MenuElement[i].x, MenuElement[i].y, GetColor(255,255,255), MenuElement[i].name );
}
goto PP;
//______________________________________________________________________________________________________________
System:
//______________________________________________________________________________________________________________PP:;
//終了カッコ
}
//______________________________________________________________________________________________________________
END:
DxLib_End(); // DXライブラリ終了処理
return 0;
}
3.DxLibを使っているんですが、ゲームプログラミングの館の選択肢選択の部分のプログラムを使ってます。
少しいじってみてもできなかったので質問させていただきました。
そこで質問なんですが、方向キーを押した時に文字が横にずれるのではなく文字の色を変えたいのですが
どう改良したらいいのでしょうか?
それからon,offこのように2つの場合どうしたらいいでしょうか?(on offの横に表示できるといいのですが)
ご回答よろしくお願いします。
(分からない部分は上のコードの中にはありませんが参考程度に)
4.C言語、C++言語両方ともコンソールしかできないんですが、ここからソフトやゲームなどを作るためには
どんな事を勉強すればいいのですか?
ゲームなどの専門学校などに入るとプログラムが組めるようにはなるのでしょうか?
5.C++の知識は、ローベルC++入門講座100pくらい読み進めたくらいの知識+やさしいC++―まずは「C言語」からはじめよう!!を読破しました。
これくらいのプログラムの知識です。
OS Windows 7 64bit・Microsoft VBA C++ Express・DxLib
色々質問させていただきました、どうか回答のほうお願いいたしますm(_ _)m