×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
というわけで、とある有名なゲーム(そう○ばん)っぽいものを作成しました。
「ゲームプログラマになる前に覚えておきたい技術 by 平山尚(株式会社セガ)」という本に載っていた最初の課題です。
意気揚々と作ってみたわけですが。。。。。
恥だね、これ。
バグも発見されてしまいましたし。
機会があれば、もう一度、書き直したいです。
しかし、またしてもクラスと関数を勘違いしてしまったおいら。
クラスを使うな=関数を使うな、と、思ってしまい、mainにすべてぶち込んでる謎。
師匠!こんなプログラム書く子でごめんなさい!!!
#include<iostream>
using namespace std;
//にもっくん@ゆうひ
int main()
{
char cView[5][8] ={""};
int i = 0;
int j = 0;
char c[8];
int iManx,ikariManx;
int iMany,ikariMany;
bool bFlg = false;
bool bPpFlg = false;
bool bloopflg = true;
bool bOoFlg = false;
//最初の物の位置
///ゴール位置
cView[1][2]='.';
cView[1][3]='.';
///人の位置
iManx = 1;
iMany = 5;
cView[1][5] ='p';
cView[2][2]='o';
cView[2][3]='o';
while(bloopflg)
{
if(bFlg)
{
//入力
cout<<"Push key! w:up a:left s:right z:down "<<endl;
cin >> c;
//判定
i=0;
while(c[i])
{
//pとPで違う
if(cView[iManx][iMany]=='p')
{
//ゴールじゃなかったらfalse
bPpFlg=false;
}
else
{
//ゴールだったらtrue
bPpFlg=true;
}
ikariManx=0;
ikariMany=0;
switch(c[i])
{
case 'a':
//左
ikariMany=-1;
break;
case 's':
//右
ikariMany=1;
break;
case 'w':
//上
ikariManx=-1;
break;
case 'z':
//下
ikariManx=1;
break;
default:
break;
}
if(cView[iManx+ikariManx][iMany+ikariMany]=='o')
{
bOoFlg=false;
}
else
{
bOoFlg=true;
}
switch(cView[iManx+ikariManx][iMany+ikariMany])
{
case 0:
{
//空白だったら
if(bPpFlg)
{
cView[iManx][iMany]='.';
}
else
{
cView[iManx][iMany]=NULL;
}
cView[iManx+ikariManx][iMany+ikariMany]='p';
iManx+=ikariManx;
iMany+=ikariMany;
break;
}
case '#':
{
//壁だったら
break;
}
case '.':
{
//ゴールだったら
if(bPpFlg)
{
cView[iManx][iMany]='.';
}
else
{
cView[iManx][iMany]=NULL;
}
cView[iManx+ikariManx][iMany+ikariMany]='P';
iManx+=ikariManx;
iMany+=ikariMany;
break;
}
case 'O':
case 'o':
{
//ゴール後の荷物だったら
///その隣の値は?
switch(cView[iManx+(ikariManx*2)][iMany+(ikariMany*2)])
{
//空白
case 0:
{
cView[iManx+(ikariManx*2)][iMany+(ikariMany*2)]='o';
if(bOoFlg)
{
cView[iManx+ikariManx][iMany+ikariMany]='P';
cView[iManx][iMany]='.';
}
else
{
cView[iManx+ikariManx][iMany+ikariMany]='p';
cView[iManx][iMany]=NULL;
}
iManx+=ikariManx;
iMany+=ikariMany;
break;
}
//ゴールだったら
case '.':
{
cView[iManx+(ikariManx*2)][iMany+(ikariMany*2)]='O';
if(bOoFlg)
{
cView[iManx+ikariManx][iMany+ikariMany]='P';
}
else
{
cView[iManx+ikariManx][iMany+ikariMany]='p';
}
cView[iManx][iMany]=NULL;
iManx+=ikariManx;
iMany+=ikariMany;
break;
}
//壁
case '#':
//荷物だったら(これはなさそうですが)
case 'O':
case 'o':
{
break;
}
default:
break;
}
break;
}
default:
break;
}
i++;
}
}
//壁の作成
///上下の壁
for(i=0;i<8;i++)
{
cView[0][i]='#';
cView[4][i]='#';
}
///左右の壁
for(i=1;i<=3;i++)
{
cView[i][0] ='#';
cView[i][7] ='#';
}
//表示
for(i=0;i<5;i++)
{
for(j=0;j<8;j++)
{
cout<<cView[i][j];
}
cout<<'\n';
}
bFlg = true;
if( cView[1][2]=='O' && cView[1][3]=='O')
{
bloopflg = false;
}
}
cout<<"OMEDETOU!!"<<endl;
return 0;
}
「ゲームプログラマになる前に覚えておきたい技術 by 平山尚(株式会社セガ)」という本に載っていた最初の課題です。
意気揚々と作ってみたわけですが。。。。。
恥だね、これ。
バグも発見されてしまいましたし。
機会があれば、もう一度、書き直したいです。
しかし、またしてもクラスと関数を勘違いしてしまったおいら。
クラスを使うな=関数を使うな、と、思ってしまい、mainにすべてぶち込んでる謎。
師匠!こんなプログラム書く子でごめんなさい!!!
#include<iostream>
using namespace std;
//にもっくん@ゆうひ
int main()
{
char cView[5][8] ={""};
int i = 0;
int j = 0;
char c[8];
int iManx,ikariManx;
int iMany,ikariMany;
bool bFlg = false;
bool bPpFlg = false;
bool bloopflg = true;
bool bOoFlg = false;
//最初の物の位置
///ゴール位置
cView[1][2]='.';
cView[1][3]='.';
///人の位置
iManx = 1;
iMany = 5;
cView[1][5] ='p';
cView[2][2]='o';
cView[2][3]='o';
while(bloopflg)
{
if(bFlg)
{
//入力
cout<<"Push key! w:up a:left s:right z:down "<<endl;
cin >> c;
//判定
i=0;
while(c[i])
{
//pとPで違う
if(cView[iManx][iMany]=='p')
{
//ゴールじゃなかったらfalse
bPpFlg=false;
}
else
{
//ゴールだったらtrue
bPpFlg=true;
}
ikariManx=0;
ikariMany=0;
switch(c[i])
{
case 'a':
//左
ikariMany=-1;
break;
case 's':
//右
ikariMany=1;
break;
case 'w':
//上
ikariManx=-1;
break;
case 'z':
//下
ikariManx=1;
break;
default:
break;
}
if(cView[iManx+ikariManx][iMany+ikariMany]=='o')
{
bOoFlg=false;
}
else
{
bOoFlg=true;
}
switch(cView[iManx+ikariManx][iMany+ikariMany])
{
case 0:
{
//空白だったら
if(bPpFlg)
{
cView[iManx][iMany]='.';
}
else
{
cView[iManx][iMany]=NULL;
}
cView[iManx+ikariManx][iMany+ikariMany]='p';
iManx+=ikariManx;
iMany+=ikariMany;
break;
}
case '#':
{
//壁だったら
break;
}
case '.':
{
//ゴールだったら
if(bPpFlg)
{
cView[iManx][iMany]='.';
}
else
{
cView[iManx][iMany]=NULL;
}
cView[iManx+ikariManx][iMany+ikariMany]='P';
iManx+=ikariManx;
iMany+=ikariMany;
break;
}
case 'O':
case 'o':
{
//ゴール後の荷物だったら
///その隣の値は?
switch(cView[iManx+(ikariManx*2)][iMany+(ikariMany*2)])
{
//空白
case 0:
{
cView[iManx+(ikariManx*2)][iMany+(ikariMany*2)]='o';
if(bOoFlg)
{
cView[iManx+ikariManx][iMany+ikariMany]='P';
cView[iManx][iMany]='.';
}
else
{
cView[iManx+ikariManx][iMany+ikariMany]='p';
cView[iManx][iMany]=NULL;
}
iManx+=ikariManx;
iMany+=ikariMany;
break;
}
//ゴールだったら
case '.':
{
cView[iManx+(ikariManx*2)][iMany+(ikariMany*2)]='O';
if(bOoFlg)
{
cView[iManx+ikariManx][iMany+ikariMany]='P';
}
else
{
cView[iManx+ikariManx][iMany+ikariMany]='p';
}
cView[iManx][iMany]=NULL;
iManx+=ikariManx;
iMany+=ikariMany;
break;
}
//壁
case '#':
//荷物だったら(これはなさそうですが)
case 'O':
case 'o':
{
break;
}
default:
break;
}
break;
}
default:
break;
}
i++;
}
}
//壁の作成
///上下の壁
for(i=0;i<8;i++)
{
cView[0][i]='#';
cView[4][i]='#';
}
///左右の壁
for(i=1;i<=3;i++)
{
cView[i][0] ='#';
cView[i][7] ='#';
}
//表示
for(i=0;i<5;i++)
{
for(j=0;j<8;j++)
{
cout<<cView[i][j];
}
cout<<'\n';
}
bFlg = true;
if( cView[1][2]=='O' && cView[1][3]=='O')
{
bloopflg = false;
}
}
cout<<"OMEDETOU!!"<<endl;
return 0;
}
PR
この記事にコメントする
カレンダー
02 | 2024/03 | 04 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
カテゴリー
最新コメント
最新記事
(04/17)
(04/17)
(04/14)
(04/05)
(02/04)
最新トラックバック
プロフィール
HN:
ゆうひ
性別:
非公開
自己紹介:
はやく一人前になりたーい(謎)
成長していければいいな。。。
成長してるよね?
自称・メイドプログラマー(修行中)
料理の味付けはおおざっぱ。
成長していければいいな。。。
成長してるよね?
自称・メイドプログラマー(修行中)
料理の味付けはおおざっぱ。
ブログ内検索
カウンター
クリック募金♪
世界樹の迷宮