トップページ > 過去ログ > 記事閲覧
ゲームを作ろうと考えています。
名前:sousi 日時: 2008/06/14 00:48

皆様はじめまして、sousiともうします。 自分でゲームを作れるようになりたいと思いC言語を勉強し始め基礎の知識は身につけたと思います。 ですが、いざ作り始めると課題にぶつかって・・・ 今までは何とかなりましたがさすがに自分で解決するのは不可能と思い投稿させていただきました。  今作っているゲームの内容は以下の通りです。 ・MAPの枠を選択&入れ替える ・入れ替えるとキャラクターはゴールへ  敵はキャラクターに向かう(自動)  今の課題以下の通りです ・枠の画面表示ができない。 ・枠を動かし座標の記憶のさせ方がわからない ・枠の入れ替え方がわからない ・枠の画面のフラグの立て方がわからない ・キャラクターの自動移動の仕方がわからない  完成しているのは以下の通りです ・MAP ・枠の構造体 ・画像の分割&読み込み&記憶 ・枠移動のキー取得&移動フラグの一部 追加事項 枠=選択画面 説明が長くなったのでソースは次に持ち越します

Page: 1 |

Re: ゲームを作ろうと考えています。 ( No.1 )
名前:sousi 日時:2008/06/14 00:50

#include "DxLib.h" typedef struct{ int x; int y; int botan,zahyou_flag; int muki; int img[2]; int d; }waku; int hantei[15][20] = { { 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 },//1 { 15,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,15 },//2 { 15,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,15 },//3 { 15,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,15 },//4 { 15,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,15 },//5 { 15,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,15 },//6 { 15,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,15 },//7 { 15,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,15 },//8 { 15,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,15 },//9 { 15,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,15 },//10 { 15,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,15 },//11 { 15,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,15 },//14 { 15,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,15 },//14 { 15,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,15 },//14 { 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 },//15 // 1,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10,11,12,13,14,15,16,17,18,19,20 }; int can_or_cannot(int x,int y,int muki){//進めるかを判定する //ここから下は壁の方向文// switch(muki){ case 0://上方向// if((hantei[y/32][x/32]&1)!=0){return 1;} else{return 0;} break; case 1://下方向// if((hantei[y/32][x/32]&2)!=0){return 1;} else{return 0;} break; case 2://左方向// if((hantei[y/32][x/32]&4)!=0){return 1;} else{return 0;} break; case 3://右方向 // if((hantei[y/32][x/32]&8)!=0){return 1;} else{return 0;} break; } } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode( TRUE ) ; // ウインドウモードに変更 if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了 int image[16]; char Key[256]; hantei; waku waku1,waku2; if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理 LoadGraphScreen( 0 , 0 , "000.bmp" , FALSE ) ; //バック画面 waku1.x=2; waku1.y=2; waku2.x=2; waku2.y=2; LoadDivGraph( "abcd.png",2,2,1,32,32,image) ;//枠画像を分割してimage配列に保存 if(waku1.x%32==0 && waku1.y%32==0){ //座標がで割り切れたら入力可能\par waku1.zahyou_flag=1; //歩くフラグを立てる。 if ( Key[ KEY_INPUT_UP ] == 1 ) //上ボタンが押されたら waku1.muki=0; //上向きフラグを立てる else if( Key[ KEY_INPUT_LEFT ] == 1 ) //左ボタンが押されたら waku1.muki=1; //左向きフラグを立てる else if( Key[ KEY_INPUT_DOWN ] == 1 ) //下ボタンが押されたら waku1.muki=2; //下向きフラグを立てる else if( Key[ KEY_INPUT_RIGHT] == 1 ) //右ボタンが押されたら waku1.muki=3; //右向きフラグを立てる else //何のボタンも押されてなかったら waku1.zahyou_flag=0; //歩かないフラグを立てる } if(waku1.zahyou_flag==1){ //枠フラグが立っていたら if (waku1.muki==0) //上向きならch.y座標を減らす waku1.y--; else if(waku1.muki==1) //左向きならch.x座標を減らす waku1.x--; else if(waku1.muki==2) //下向きならch.y座標を増やす waku1.y++; else if(waku1.muki==3) //右向きならch.x座標を増やす waku1.x++; } waku1.img[2]=image[(waku1.x%32+waku1.y%32)/8 + waku1.muki*4];//画像をセット DrawGraph( waku1.x,waku1.y,waku1.img[2],TRUE ) ;//画像を描画 WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用) DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }
Re: ゲームを作ろうと考えています。 ( No.2 )
名前:sousi 日時:2008/06/14 01:03

コンバイラは Microsoft Visual C++ 2008 Express Edition 使用言語はC言語 OSはVista もちろんDXを使わせ手いただいております 見にくいところや何を指しているのかわからないところは聞いてください。できるだけがんばって説明します。 考える行程や原理は、もちろんの事具体的なソースコードを書いていただけるとものすごくうれしいです。 まだ初めて1ヶ月で詰め込んだので意味不明な点も多いかと思いますが、皆さんの講義を今後に活かしていければいいと思って おりますので、よろしくお願いします。
Re: ゲームを作ろうと考えています。 ( No.3 )
名前:かたぱると 日時:2008/06/17 10:41

えー、 「今後の課題」となっている部分を一つ一つ解決に導く、といった流れになるのでしょうか。 質問の焦点がどこにあるのかが良く解らず、 3つも4つも同時に答えなければならないのは正直回答しにくいです。 とりあえず解決したい問題を1つに絞ってもらえますでしょうか。
Re: ゲームを作ろうと考えています。 ( No.4 )
名前:L.H.@文林 日時:2008/06/21 01:09

 どこにもwhile関数が見当たらなくて、これでは1フレーム実行したらプログラムが終了するのではないでしょうか?  ひょっとすると、メインループとかループとか、そういう概念をご存じではないのでしょうか?  sousiさんみたいなガッツのある人、僕は好きです。  しかし、ゲーム作りの基礎知識は、情熱や言語知識だけではどうにもならんものでして……  というわけで、DXライブラリのTOPページにある、 『DXライブラリミニテクニック』 『DXライブラリサンプルプログラム』 『DXライブラリゲームプログラム開発講座』  この3つのページに目を通して、実際に組んでみて、理解してからオリジナルに挑戦した方が良いと思います。  sousuiさんの分からないことは、上記3つのページに全て書かれています。
Re: ゲームを作ろうと考えています。 ( No.5 )
名前:sousi 日時:2008/06/22 08:34

DXのページを一度目を通してから再度質問させていただきます。 ループの知識についてはただいま勉強中です。ゲームを作る時に 今まで勉強した事をどう関連付けていけばいいのかと言うところが 今の課題です。考え方は上級者の皆さんから教わり覚えていくしかないのですかね^^;
Re: ゲームを作ろうと考えています。 ( No.6 )
名前:L.H.@文林 日時:2008/06/23 12:48

 一度目を通してから、ではなくて、実際に組んでみて下さい。  これはとても重要なことです。  それが出来ないようでは、もう、この先はありません。  実際に組んでみて、それから複数の機能を組み合わせて、思った通りに動くかどうか試して下さい。  動かなかったら、なぜ動かなかったのかを考えていって下さい。  あと、人に聞く前に、最低でも3日は悩んで下さい。  オリジナルでゲームを作る覚悟ってのはそういうもんです。  分からないことが出るたびに人に聞くようではこの先、一生掛かってもゲームなんか出来ませんよ。 (ましてや、疑問が基礎レベルのこととなればなおさらです)  先は長いですが、がんばってくださいね。
Re: ゲームを作ろうと考えています。 ( No.7 )
名前:sousi 日時:2008/06/23 13:56

あい・・・・・ 基礎レベルでつまずいて皆さんに迷惑かけていたらきりが無いですよね^^;;;; いちど、サンプルのゲームを作りながら関数などを調べて再度、勉強していきたいと思います。 上級者の皆さんの励ましで元気が出ました。 あと、マルチしてしまい、申し訳ありませんでした。以後気おつけたいと思います。

Page: 1 |