ページ 11

迷路作成しています…

Posted: 2013年2月22日(金) 22:54
by ball
初心者です…。
壁の当たり判定がうまくいきません。
初期位置から動きません…
よければ誤りを指摘してもらえないでしょうか?
#include<stdio.h>
#include"CScreen.h"
#include<windows.h> /*
1="─"
2="┐"
3="|"
4="┬"
5="└"
6="├"
7="┘"
8="┌"
9=" "
*/
// 1 3 5 7 9  1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9
int stage1[28][69]={{8,0,1,0,1,0,1,0,4,0,1,0,4,0,1,0,1,0,1,0,1,0,4,0,1,0,1,0,4,0,1,0,4,0,1,0,1,0,1,0,4,0,1,0,4,0,1,0,1,0,4,0,1,0,1,0,1,0,4,0,1,0,4,0,1,0,1,0,2},//1
{3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},//2
{6,0,1,0,2,0,9,0,3,0,9,0,5,0,1,0,2,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,5,0,1,0,2,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,5,0,2,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,5,0,1,0,2,0,9,0,3,0,9,0,9,0,5,0,2,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,6,0,1,0,9,0,3},
{3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
{3,0,9,0,6,0,1,0,2,0,9,0,3,0,9,0,5,0,1,0,2,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,8,0,7,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,5,0,2,0,9,0,3},
{3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,5,0,2,0,9,0,3,0,9,0,3,0,9,0,8,0,1,0,7,0,9,0,9,0,3,0,9,0,3},
{3,0,9,0,3,0,9,0,3,0,9,0,5,0,2,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,8,0,7,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,3,0,9,0,3},/*X=35(2バイトで70),Y=10*/
{3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,8,0,1,0,7,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,8,0,7,0,9,0,3},
{3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,8,0,7,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,8,0,7,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,5,0,2,0,9,0,3,0,9,0,9,0,9,0,3},
{3,0,9,0,5,0,2,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3},
{3,0,9,0,8,0,7,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,5,0,2,0,9,0,8,0,1,0,7,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,8,0,1,0,1,0,1,0,2,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,8,0,7,0,9,0,3,0,9,0,8,0,7,0,9,0,3,0,9,0,3,0,9,0,9,0,6,0,9,0,3,0,9,0,8,0,7,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,5,0,1,0,1,0,7,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,8,0,1,0,2,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3},/*X=35(2バイトで70),Y=20*/
{3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,8,0,1,0,2,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,8,0,1,0,2,0,9,0,9,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,3,0,9,0,8,0,7,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,5,0,1,0,7,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,5,0,1,0,7,0,9,0,9,0,9,0,9,0,3},
{3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3},
{5,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,7}};/*28*/
int x,y;/*配列stage1の要素数*/
int p=3,q=2;/*プレイヤーの位置情報*/
int b=10,r=20,g=30,yel=40;
/*プロトタイプ宣言*/
void map(void);
void play(void);
void control(void);
int main(void)
{
int i;
while(1){
if(GetAsyncKeyState(VK_ESCAPE))
break;
CLS();
map();
play();
control();

for(i=0;i<160000000;i++);
}
return 0;
}
void control(void)
{
int i;
if(GetAsyncKeyState(VK_DOWN))
{
q+=1;
b=12;
r=20;
g=30;
yel=40;
if(stage1[q][p]!=9)
q-=1;
}
if(GetAsyncKeyState(VK_RIGHT))
{
rewind(stdin);
p+=2;
b=10;
r=22;
g=30;
yel=40;
if(stage1[q][p]!=9)
p-=2;
}
if(GetAsyncKeyState(VK_LEFT))
{
rewind(stdin);
p-=2;
b=10;
r=20;
g=32;
yel=40;
if(stage1[q][p]!=9)
p+=2;
}
if(GetAsyncKeyState(VK_UP))
{
rewind(stdin);
q-=1;
b=10;
r=20;
g=30;
yel=42;
if(stage1[q][p]!=9)
q+=1;
}
}
void map(void)
{
/*
1="─"
2="┐"
3="|"
4="┬"
5="└"
6="├"
7="┘"
8="┌"
9=" "
*/
int i;
for(x=0;x<28;x++){
for(y=0;y<69;y++){
if(stage1[x][y]==8){
LOCATE(y+1,x+1);
COLOR(WHITE);
printf("┌");
}
else if(stage1[x][y]==1){
LOCATE(y+1,x+1);
COLOR(WHITE);
printf("─");
}
else if(stage1[x][y]==2){
LOCATE(y+1,x+1);
COLOR(WHITE);
printf("┐");

}
else if(stage1[x][y]==3){
LOCATE(y+1,x+1);
COLOR(WHITE);
printf("|");
}
else if(stage1[x][y]==4){
LOCATE(y+1,x+1);
COLOR(WHITE);
printf("┬");
}
else if(stage1[x][y]==5){
LOCATE(y+1,x+1);
COLOR(WHITE);
printf("└");
}
else if(stage1[x][y]==6){
LOCATE(y+1,x+1);
COLOR(WHITE);
printf("├");
}
else if(stage1[x][y]==7){
LOCATE(y+1,x+1);
COLOR(WHITE);
printf("┘");
}
}
}
return;
}
void play(void)
{
int i;
if(b==12&&r==20&&g==30&&yel==40){
LOCATE(p,q);
printf("●");
}
else if(b==12&&r==20&&g==30&&yel==40){
LOCATE(p,q);
COLOR(BLUE);
printf("●");
}
else if(b==10&&r==22&&g==30&&yel==40){
LOCATE(p,q);
COLOR(RED);
printf("●");
}
else if(b==10&&r==20&&g==32&&yel==40){
LOCATE(p,q);
COLOR(GREEN);
printf("●");
}
else if(b==10&&r==20&&g==30&&yel==42){
LOCATE(p,q);
COLOR(YELLOW);
printf("●");
}
return;

}

Re: 迷路作成しています…

Posted: 2013年2月22日(金) 22:55
by ball
迷路の70というコメントは無視してください

Re: 迷路作成しています…

Posted: 2013年2月22日(金) 23:22
by みけCAT
まずコードはcodeタグでいただけるとありがたいです。

Re: 迷路作成しています…

Posted: 2013年2月22日(金) 23:35
by ball

コード:

#include<stdio.h>
#include"CScreen.h"
#include<windows.h> /*
 1="─"
 2="┐"
 3="|"
4="┬"
 5="└"
 6="├"
 7="┘"
 8="┌"
 9=" "
 */
 // 1 3 5 7 9  1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 
int stage1[28][69]={{8,0,1,0,1,0,1,0,4,0,1,0,4,0,1,0,1,0,1,0,1,0,4,0,1,0,1,0,4,0,1,0,4,0,1,0,1,0,1,0,4,0,1,0,4,0,1,0,1,0,4,0,1,0,1,0,1,0,4,0,1,0,4,0,1,0,1,0,2},//1
 {3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},//2
 {6,0,1,0,2,0,9,0,3,0,9,0,5,0,1,0,2,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,5,0,1,0,2,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,5,0,2,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,5,0,1,0,2,0,9,0,3,0,9,0,9,0,5,0,2,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,6,0,1,0,9,0,3},
 {3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
 {3,0,9,0,6,0,1,0,2,0,9,0,3,0,9,0,5,0,1,0,2,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,8,0,7,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,5,0,2,0,9,0,3},
 {3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,5,0,2,0,9,0,3,0,9,0,3,0,9,0,8,0,1,0,7,0,9,0,9,0,3,0,9,0,3},
 {3,0,9,0,3,0,9,0,3,0,9,0,5,0,2,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,8,0,7,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,3,0,9,0,3},/*X=35(2バイトで70),Y=10*/
 {3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,8,0,1,0,7,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,8,0,7,0,9,0,3},
 {3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,8,0,7,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,8,0,7,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,5,0,2,0,9,0,3,0,9,0,9,0,9,0,3},
 {3,0,9,0,5,0,2,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3},
 {3,0,9,0,8,0,7,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,5,0,2,0,9,0,8,0,1,0,7,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,8,0,1,0,1,0,1,0,2,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,8,0,7,0,9,0,3,0,9,0,8,0,7,0,9,0,3,0,9,0,3,0,9,0,9,0,6,0,9,0,3,0,9,0,8,0,7,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,5,0,1,0,1,0,7,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,8,0,1,0,2,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3},/*X=35(2バイトで70),Y=20*/
 {3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,8,0,1,0,2,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,8,0,1,0,2,0,9,0,9,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,3,0,9,0,8,0,7,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,5,0,1,0,7,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,5,0,1,0,7,0,9,0,9,0,9,0,9,0,3},
 {3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3},
 {5,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,7}};/*28*/
int x,y;/*配列stage1の要素数*/
int p=3,q=2;/*プレイヤーの位置情報*/
int b=10,r=20,g=30,yel=40;
/*プロトタイプ宣言*/
void map(void); 
void play(void);
void control(void);
int main(void)
{
 int i;
 while(1){
 if(GetAsyncKeyState(VK_ESCAPE))
 break;
 CLS();
 map();
 play();
 control();

 for(i=0;i<160000000;i++);
 }
 return 0;
}
void control(void)
{
 int i;
 if(GetAsyncKeyState(VK_DOWN))
 {
 q+=1;
 b=12;
 r=20;
 g=30;
 yel=40;
 if(stage1[q][p]!=9)
 q-=1;
 }
 if(GetAsyncKeyState(VK_RIGHT))
 {
 rewind(stdin);
 p+=2;
 b=10;
 r=22;
 g=30;
 yel=40;
 if(stage1[q][p]!=9)
 p-=2;
 }
 if(GetAsyncKeyState(VK_LEFT))
 {
 rewind(stdin);
 p-=2;
 b=10;
 r=20;
 g=32;
 yel=40;
 if(stage1[q][p]!=9)
 p+=2;
 }
 if(GetAsyncKeyState(VK_UP))
 {
 rewind(stdin);
 q-=1;
 b=10;
 r=20;
 g=30;
 yel=42;
 if(stage1[q][p]!=9)
 q+=1;
 }
}
void map(void)
{
 /*
 1="─"
 2="┐"
 3="|"
 4="┬"
 5="└"
 6="├"
 7="┘"
 8="┌"
 9=" "
 */
 int i;
 for(x=0;x<28;x++){
 for(y=0;y<69;y++){
 if(stage1[x][y]==8){
 LOCATE(y+1,x+1);
 COLOR(WHITE);
 printf("┌");
 }
 else if(stage1[x][y]==1){
 LOCATE(y+1,x+1);
 COLOR(WHITE);
 printf("─");
 }
 else if(stage1[x][y]==2){
 LOCATE(y+1,x+1);
 COLOR(WHITE);
 printf("┐");

 }
 else if(stage1[x][y]==3){
 LOCATE(y+1,x+1);
 COLOR(WHITE);
 printf("|");
 }
else if(stage1[x][y]==4){
 LOCATE(y+1,x+1);
 COLOR(WHITE);
 printf("┬");
 }
 else if(stage1[x][y]==5){
 LOCATE(y+1,x+1);
 COLOR(WHITE);
 printf("└");
 }
 else if(stage1[x][y]==6){
 LOCATE(y+1,x+1);
 COLOR(WHITE);
 printf("├");
 }
 else if(stage1[x][y]==7){
 LOCATE(y+1,x+1);
 COLOR(WHITE);
 printf("┘");
 }
 }
 }
 return;
}
void play(void)
{
 int i;
 if(b==12&&r==20&&g==30&&yel==40){
 LOCATE(p,q);
 printf("●");
 }
 else if(b==12&&r==20&&g==30&&yel==40){
 LOCATE(p,q);
 COLOR(BLUE);
 printf("●");
 }
 else if(b==10&&r==22&&g==30&&yel==40){
 LOCATE(p,q);
 COLOR(RED);
 printf("●");
 }
 else if(b==10&&r==20&&g==32&&yel==40){
 LOCATE(p,q);
 COLOR(GREEN);
 printf("●");
 }
 else if(b==10&&r==20&&g==30&&yel==42){
 LOCATE(p,q);
 COLOR(YELLOW);
 printf("●");
 }
 return;

}

Re: 迷路作成しています…

Posted: 2013年2月22日(金) 23:36
by ball
連投申し訳ないです…
ソースコード追加させていただきました。

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 01:00
by softya(ソフト屋)
謎の変数p,q,b,r,g,yelについて説明してもらえますか。

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 01:09
by ball

コード:

p,q /*プレイヤー(”○”)の座標*/
b,r,g,yel /*それぞれ矢印キー入力時にプレイヤーの色を変えるための変数*/

です

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 07:42
by みけCAT
ソースコードをインデントすることをおすすめします。

コード:

#include<stdio.h>
#include"CScreen.h"
#include<windows.h> /*
 1="─"
 2="┐"
 3="|"
4="┬"
 5="└"
 6="├"
 7="┘"
 8="┌"
 9=" "
 */
// 1 3 5 7 9  1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 
int stage1[28][69]={
	{8,0,1,0,1,0,1,0,4,0,1,0,4,0,1,0,1,0,1,0,1,0,4,0,1,0,1,0,4,0,1,0,4,0,1,0,1,0,1,0,4,0,1,0,4,0,1,0,1,0,4,0,1,0,1,0,1,0,4,0,1,0,4,0,1,0,1,0,2},//1
	{3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},//2
	{6,0,1,0,2,0,9,0,3,0,9,0,5,0,1,0,2,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,5,0,1,0,2,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,5,0,2,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,5,0,1,0,2,0,9,0,3,0,9,0,9,0,5,0,2,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,6,0,1,0,9,0,3},
	{3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
	{3,0,9,0,6,0,1,0,2,0,9,0,3,0,9,0,5,0,1,0,2,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,8,0,7,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,5,0,2,0,9,0,3},
	{3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,5,0,2,0,9,0,3,0,9,0,3,0,9,0,8,0,1,0,7,0,9,0,9,0,3,0,9,0,3},
	{3,0,9,0,3,0,9,0,3,0,9,0,5,0,2,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,8,0,7,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,3,0,9,0,3},/*X=35(2バイトで70),Y=10*/
	{3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,8,0,1,0,7,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,8,0,7,0,9,0,3},
	{3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,8,0,7,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,8,0,7,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,5,0,2,0,9,0,3,0,9,0,9,0,9,0,3},
	{3,0,9,0,5,0,2,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,3},
	{3,0,9,0,8,0,7,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,5,0,2,0,9,0,8,0,1,0,7,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,8,0,1,0,1,0,1,0,2,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,8,0,7,0,9,0,3,0,9,0,8,0,7,0,9,0,3,0,9,0,3,0,9,0,9,0,6,0,9,0,3,0,9,0,8,0,7,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,5,0,1,0,1,0,7,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,8,0,1,0,2,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3},/*X=35(2バイトで70),Y=20*/
	{3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,8,0,1,0,2,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,8,0,1,0,2,0,9,0,9,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,3,0,9,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,3,0,9,0,8,0,7,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,5,0,1,0,7,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,5,0,1,0,7,0,9,0,9,0,9,0,9,0,3},
	{3,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3,0,9,0,3,0,9,0,3,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,3},
	{5,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,7}/*28*/
};
int x,y;/*配列stage1の要素数*/
int p=3,q=2;/*プレイヤーの位置情報*/
int b=10,r=20,g=30,yel=40;
/*プロトタイプ宣言*/
void map(void); 
void play(void);
void control(void);
int main(void)
{
	int i;
	while(1){
		if(GetAsyncKeyState(VK_ESCAPE))
		break;
		CLS();
		map();
		play();
		control();

		for(i=0;i<160000000;i++);
	}
	return 0;
}
void control(void)
{
	int i;
	if(GetAsyncKeyState(VK_DOWN))
	{
		q+=1;
		b=12;
		r=20;
		g=30;
		yel=40;
		if(stage1[q][p]!=9)
		q-=1;
	}
	if(GetAsyncKeyState(VK_RIGHT))
	{
		rewind(stdin);
		p+=2;
		b=10;
		r=22;
		g=30;
		yel=40;
		if(stage1[q][p]!=9)
		p-=2;
	}
	if(GetAsyncKeyState(VK_LEFT))
	{
		rewind(stdin);
		p-=2;
		b=10;
		r=20;
		g=32;
		yel=40;
		if(stage1[q][p]!=9)
		p+=2;
	}
	if(GetAsyncKeyState(VK_UP))
	{
		rewind(stdin);
		q-=1;
		b=10;
		r=20;
		g=30;
		yel=42;
		if(stage1[q][p]!=9)
		q+=1;
	}
}
void map(void)
{
	/*
 1="─"
 2="┐"
 3="|"
 4="┬"
 5="└"
 6="├"
 7="┘"
 8="┌"
 9=" "
 */
	int i;
	for(x=0;x<28;x++){
		for(y=0;y<69;y++){
			if(stage1[x][y]==8){
				LOCATE(y+1,x+1);
				COLOR(WHITE);
				printf("┌");
			}
			else if(stage1[x][y]==1){
				LOCATE(y+1,x+1);
				COLOR(WHITE);
				printf("─");
			}
			else if(stage1[x][y]==2){
				LOCATE(y+1,x+1);
				COLOR(WHITE);
				printf("┐");

			}
			else if(stage1[x][y]==3){
				LOCATE(y+1,x+1);
				COLOR(WHITE);
				printf("|");
			}
			else if(stage1[x][y]==4){
				LOCATE(y+1,x+1);
				COLOR(WHITE);
				printf("┬");
			}
			else if(stage1[x][y]==5){
				LOCATE(y+1,x+1);
				COLOR(WHITE);
				printf("└");
			}
			else if(stage1[x][y]==6){
				LOCATE(y+1,x+1);
				COLOR(WHITE);
				printf("├");
			}
			else if(stage1[x][y]==7){
				LOCATE(y+1,x+1);
				COLOR(WHITE);
				printf("┘");
			}
		}
	}
	return;
}
void play(void)
{
	int i;
	if(b==12&&r==20&&g==30&&yel==40){
		LOCATE(p,q);
		printf("●");
	}
	else if(b==12&&r==20&&g==30&&yel==40){
		LOCATE(p,q);
		COLOR(BLUE);
		printf("●");
	}
	else if(b==10&&r==22&&g==30&&yel==40){
		LOCATE(p,q);
		COLOR(RED);
		printf("●");
	}
	else if(b==10&&r==20&&g==32&&yel==40){
		LOCATE(p,q);
		COLOR(GREEN);
		printf("●");
	}
	else if(b==10&&r==20&&g==30&&yel==42){
		LOCATE(p,q);
		COLOR(YELLOW);
		printf("●");
	}
	return;

}

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 07:49
by みけCAT
初期位置(3,2)のx座標に±2した位置、およびy座標に±1した位置に9のマスがないため、動かないのだと思います。

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 15:36
by ball
返答ありがとうございます。
初期位置(3,2)のx座標±2した座標とy座標±1した座標に9を配置してもうごかないようです…

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 17:30
by ball
1.キー入力。
2.その方向にx又はyの座標をプラス(マイナス)。
3.移動した座標が道(" "=9)でなければプラス(マイナス)を打消し。
4結果をLOCATE(p,q)で表示
↑が正常に行われていれば、移動するはずなんですが、やはり動かないです…。
壁の当たり判定を行っている
70行目以降の
if(stage1[q][p]!=9)/*9='' "*/
{
}
↑を抜くと、壁を無視して移動はします。

コード:


Re: 迷路作成しています…

Posted: 2013年2月23日(土) 17:32
by softya(ソフト屋)
実は、同じ環境がないので動作確認できないのです。
あと、無駄と思われる0データがたくさんあるのもプログラムを読みづらくしている原因です。

いま、どんな環境でも動くように書き直していますのでしばらくお待ちください。

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 17:42
by ball
申し訳ありません。
これを機に第三者が見ることを前提とした、コメントアウト、変数の名前、インデントを正しくつける練習をしてみようと思います。
迷路が完成したら、そのソースを貼り付けさせていただいてもよろしいでしょうか?

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 18:11
by softya(ソフト屋)
とりあえず、Screen.hが無い環境でも動くようにしてみましたが迷路の形が変ですね。これは私のミスでしょうか?
で、キー入力された方向には動くようになっています(横に行けないので横は未確認です)。
カラーがないのと描画が遅いのは仕様です。大幅改造したので参考程度にして下さい。

気になったところ。
・0のデータが無意味なところ。工夫すれば不要です。
・x,yの使い方が画面のx,yと逆
・変数名が短すぎる。

コード:

#include<windows.h>
// 1 3 5 7 9  1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 
int stage1[28][35]={
	{8,1,1,1,4,1,4,1,1,1,1,4,1,1,4,1,4,1,1,1,4,1,4,1,1,4,1,1,1,4,1,4,1,1,2},//1
	{3,9,9,9,3,9,3,9,9,9,9,3,9,9,3,9,3,9,9,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,3},//2
	{6,1,2,9,3,9,5,1,2,9,9,3,9,9,3,9,5,1,2,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,3},
	{3,9,3,9,3,9,9,9,3,9,9,3,9,9,3,9,9,9,3,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,3},
	{3,9,3,9,3,9,9,9,3,9,9,3,9,9,3,9,9,9,3,9,3,9,5,2,9,3,9,9,9,3,9,3,9,9,3},
	{3,9,3,9,5,1,2,9,3,9,9,5,2,9,3,9,9,9,3,9,3,9,9,3,9,3,9,9,9,3,9,6,1,9,3},
	{3,9,3,9,9,9,3,9,3,9,9,9,3,9,3,9,9,9,3,9,3,9,9,3,9,3,9,9,9,3,9,3,9,9,3},
	{3,9,6,1,2,9,3,9,5,1,2,9,3,9,3,9,9,9,3,9,3,9,9,3,9,3,9,9,9,3,9,3,9,9,3},
	{3,9,3,9,3,9,3,9,9,9,3,9,3,9,3,9,9,8,7,9,3,9,9,3,9,3,9,9,9,3,9,5,2,9,3},
	{3,9,3,9,3,9,3,9,9,9,3,9,3,9,3,9,9,3,9,9,5,2,9,3,9,3,9,8,1,7,9,9,3,9,3},
	{3,9,3,9,3,9,5,2,9,9,3,9,3,9,3,9,8,7,9,9,9,3,9,3,9,3,9,3,9,9,9,9,3,9,3},/*X=35(2バイトで70),Y=10*/
	{3,9,3,9,3,9,9,3,9,9,3,9,3,9,3,9,3,9,9,8,1,7,9,3,9,3,9,3,9,9,9,8,7,9,3},
	{3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,3,9,9,3,9,9,9,3,9,3,9,3,9,9,8,7,9,9,3},
	{3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,3,9,8,7,9,9,9,3,9,3,9,5,2,9,3,9,9,9,3},
	{3,9,5,2,9,3,9,3,9,9,3,9,3,9,3,9,3,9,9,9,9,9,9,3,9,9,9,9,3,9,3,9,9,9,3},
	{3,9,8,7,9,3,9,3,9,9,3,9,3,9,3,9,5,2,9,8,1,7,9,9,9,9,9,9,3,9,9,9,9,9,3},
	{3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,9,3,9,3,9,9,8,1,1,1,2,9,3,9,9,9,9,9,3},
	{3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,9,9,9,3},
	{3,9,3,9,8,7,9,3,9,8,7,9,3,9,3,9,9,6,9,3,9,8,7,9,9,9,3,9,3,9,9,9,9,9,3},
	{3,9,3,9,3,9,9,3,9,5,1,1,7,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,9,9,3},
	{3,9,3,9,3,9,9,3,9,9,9,9,9,9,9,9,9,3,9,3,9,3,9,8,1,2,9,9,9,9,9,9,9,9,3},/*X=35(2バイトで70),Y=20*/
	{3,9,3,9,3,9,9,3,9,8,1,2,9,9,9,9,9,3,9,3,9,3,9,3,9,3,9,8,1,2,9,9,9,9,3},
	{3,9,3,9,3,9,9,3,9,3,9,3,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,3,9,3,9,9,9,9,3},
	{3,9,3,9,3,9,9,3,9,9,9,9,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,9,9,3},
	{3,9,3,9,3,9,8,7,9,3,9,3,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,3,9,3,9,9,9,9,3},
	{3,9,3,9,3,9,3,9,9,5,1,7,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,5,1,7,9,9,9,9,3},
	{3,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,9,9,3},
	{5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7}/*28*/
};
int plyX=1,plyY=3;/*プレイヤーの位置情報*/
int b=10,r=20,g=30,yel=40;
/*プロトタイプ宣言*/
void map(void); 
void play(void);
void control(void);
int main(void)
{
	int i;
	while(1){
//		  if(GetAsyncKeyState(VK_ESCAPE))
  //			  break;
 // 	  CLS();
		map();
		play();
		control();
 
 		Sleep(60);
	}
	return 0;
}
void control(void)
{
	int keepX=plyX,keepY=plyY;
	if( kbhit() ) {
		switch(getch()) {
		case 0x50: // ↓
			plyY+=1;
			break;
		case 0x48: // ↑
			plyY-=1;
			break;
		case 0x4d: // →
			plyX+=1;
			break;
		case 0x4b: // ←
			plyX-=1;
			break;
		}
		if(stage1[plyY][plyX]!=9) {
			plyX = keepX;
			plyY = keepY;
		}
	}
}
void map(void)
{
	int x,y;/*配列stage1の要素数*/
	char *print_map[] = {
		"  ",
		"─",//1
		"┐",//2
		"|",//3
		"┬",//4
		"└",//5
		"├",//6
		"┘",//7
		"┌",//8
		" ",//9
	};
 
 	system("cls");
   	for(y=0;y<28;y++){
		for(x=0;x<35;x++){
			if( plyY==y && plyX==x ) {
				printf("%s","●");
			} else	{
				printf("%s",print_map[stage1[y][x]]);
			}
		}
		printf("\n");
	}
	return;
}
void play(void)
{
}

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 18:58
by ball
訂正、改訂ありがとうございます。
一度やってみます。

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 20:36
by ball
書いていただいたソースをもとに新しく書いてみました。
ワーピ機能をつけようと、control関数の中に
if(stage1[plyY][plyX]==stage1[1][26])
{
plyX=7;
plyY=26;
}
としてみたのですが、うまくいきません。
やり方がまずいのでしょうか?
何度もすみません。

コード:


#include<stdio.h>
#include"CScreen.h"
#include<windows.h>								
				
int stage1[28][69]={
//	 1   3   5   7   9   1   3   5   7   9   1   3   5   7   9   1   3   5//
    {8,1,1,1,4,1,4,1,1,1,1,4,1,1,4,1,4,1,1,1,4,1,4,1,1,4,1,1,1,4,1,4,1,1,2},//1
    {3,9,9,9,3,9,3,9,9,9,9,3,9,9,3,9,3,9,9,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,3},//2
    {6,9,2,9,3,9,5,1,2,9,9,3,9,9,3,9,5,1,2,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,3},//3
    {3,9,3,9,3,9,9,9,3,9,9,3,9,9,3,9,9,9,3,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,3},//4
    {3,9,3,9,3,9,9,9,3,9,9,3,9,9,3,9,9,9,3,9,3,9,5,2,9,3,9,9,9,3,9,3,9,9,3},//5
    {3,9,3,9,5,1,2,9,3,9,9,5,2,9,3,9,9,9,3,9,3,9,9,3,9,3,9,9,9,3,9,6,1,9,3},//6
    {3,9,3,9,9,9,3,9,3,9,9,9,3,9,3,9,9,9,3,9,3,9,9,3,9,3,9,9,9,3,9,3,9,9,3},//7
    {3,9,6,1,2,9,3,9,5,1,2,9,3,9,3,9,9,9,3,9,3,9,9,3,9,3,9,9,9,3,9,3,9,9,3},//8
    {3,9,3,9,3,9,3,9,9,9,3,9,3,9,3,9,9,8,7,9,3,9,9,3,9,3,9,9,9,3,9,5,2,9,3},//9
    {3,9,3,9,3,9,3,9,9,9,3,9,3,9,3,9,9,3,9,9,5,2,9,3,9,3,9,8,1,7,9,9,3,9,3},//10
    {3,9,3,9,3,9,5,2,9,9,3,9,3,9,3,9,8,7,9,9,9,3,9,3,9,3,9,3,9,9,9,9,3,9,3},//11
    {3,9,3,9,5,2,9,3,9,9,3,9,3,9,3,9,3,9,9,8,1,7,9,3,9,3,9,3,9,9,9,8,7,9,3},//12
    {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,3,9,9,3,9,9,9,3,9,3,9,3,9,9,8,7,9,9,3},//13
    {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,3,9,8,7,9,9,9,3,9,3,9,5,2,9,3,9,9,9,3},//14
    {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,3,9,9,9,9,9,9,3,9,9,9,9,3,9,3,9,9,9,3},//15
    {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,5,2,9,8,1,7,9,9,9,9,9,9,3,9,9,9,9,9,3},//16
    {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,9,3,9,3,9,9,8,1,1,1,2,9,3,9,9,9,9,9,3},//17
    {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,9,9,9,3},//18
    {3,9,3,9,8,7,9,3,9,8,7,9,3,9,3,9,9,3,9,3,9,8,7,9,9,9,3,9,3,9,9,9,9,9,3},//19
    {3,9,3,9,3,9,9,3,9,5,1,1,7,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,9,9,3},//20
    {3,9,3,9,3,9,9,3,9,9,9,9,9,9,9,9,9,3,9,3,9,3,9,8,1,2,9,9,9,9,9,9,9,9,3},//21
    {3,9,3,9,3,9,9,3,9,8,1,2,9,9,9,9,9,3,9,3,9,3,9,3,9,3,9,8,1,2,9,9,9,9,3},//22
    {3,9,3,9,3,9,9,3,9,3,9,3,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,3,9,3,9,9,9,9,3},//23
    {3,9,3,9,3,9,9,3,9,9,9,9,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,9,9,3},//24
    {3,9,3,9,3,9,8,7,9,3,9,3,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,3,9,3,9,9,9,9,3},//25
    {3,9,3,9,3,9,3,9,9,5,1,7,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,5,1,7,9,9,9,9,3},//26
    {3,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,9,9,3},//27
    {5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7}//28
};
int plyX=1,plyY=1;/*プレイヤーの位置情報*/
int b=10,r=20,g=30,yel=40;
/*プロトタイプ宣言*/
void map(void);	
void play(void);
void control(void);
int main(void)
{
	int i;
	while(1){
		if(GetAsyncKeyState(VK_ESCAPE))
			break;
			CLS();
			map();
			play();
			control();

	for(i=0;i<10000000;i++);
	}
	return 0;
}
void control(void)
{
	int keepX=plyX,keepY=plyY;
	if(GetAsyncKeyState(VK_DOWN))
	{
		plyY+=1;
		b=12;
		r=20;
		g=30;
		yel=40;
	}
	if(GetAsyncKeyState(VK_RIGHT))
	{
		plyX+=1;
		b=10;
		r=22;
		g=30;
		yel=40;
	}
	if(GetAsyncKeyState(VK_LEFT))
	{
		plyX-=1;
		b=10;
		r=20;
		g=32;
		yel=40;
	}
	if(GetAsyncKeyState(VK_UP))
	{
		plyY-=1;
		b=10;
		r=20;
		g=30;
		yel=42;
	}
	if(stage1[plyY][plyX]!=9){
	plyX=keepX;
	plyY=keepY;
	}
	if(stage1[plyY][plyX]==stage1[26][1])
	{
             plyX=5;
             plyY=26;
	}
}
void map(void)
{
	int x,y;/*配列stage1の要素数*/
    char *print_map[]={
        "  ",
        "─",//1
        "┐",//2
        "|",//3
        "┬",//4
        "└",//5
        "├",//6
        "┘",//7
        "┌",//8
        " ",//9
    };
	CLS();
	for(y=0;y<28;y++){
		for(x=0;x<35;x++){
			if(plyY==y&&plyX==x){
			COLOR(YELLOW);
			printf("%s","●");
			}else{
				printf("%s",print_map[stage1[y][x]]);
			}
		}
		printf("\n");
	}
		LOCATE(21,23);
		printf("W");
		LOCATE(21,25);
		printf("W");
		LOCATE(49,22);
		printf("W");
		LOCATE(57,23);
		printf("W");
		LOCATE(57,25);
		printf("W");
	return;
}
void play(void)
{
}

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 20:59
by softya(ソフト屋)
この
if(stage1[plyY][plyX]==stage1[26][1])
のだと配列の値がい等しい時ですよ。
調べたいのは座標じゃないんでしょうか?

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 21:46
by ball
あ、そうなりますね…。
座標を調べるのを試しているのですが、うまくいかないです…。

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 21:53
by softya(ソフト屋)
座標を比べるのはxとyの座標を比べるしか無いです。つまり、121行目でもやっている(x==a)&&(y==b)の形しかありません。
あとインデントが乱れているので気をつけて下さい。 → 私が整えたはずのところまで乱れています。

Re: 迷路作成しています…

Posted: 2013年2月23日(土) 22:00
by ball
if((plyX==1)&&(plyY==26))
{
plyX=8;
plyY=26;
}
試しにこれでやると成功しました。
ありがとうございます。
インデント気を付けます。

Re: 迷路作成しています…

Posted: 2013年2月24日(日) 02:04
by ball
おかげさまで一番目のマップはうまくいきそうです。
ゴールマスを踏んだら二番目のマップに進むように関数に呼び出したのですが、
ESCキーを入力して抜ける様にできないです。

度々申し訳ありませんが、よければご指摘いただけますか?
インデントも気を付けたつもりです。

コード:


[/co#include<stdio.h>
#include"CScreen.h"
#include<windows.h>								
				
int stage1[28][69]={
//	 1   3   5   7   9   1   3   5   7   9   1   3   5   7   9   1   3   5//
    {8,1,1,1,4,1,4,1,1,1,1,4,1,1,4,1,4,1,1,1,4,1,4,1,1,4,1,1,1,4,1,4,1,1,2},//1
    {3,9,9,9,3,9,3,9,9,9,9,3,9,9,3,9,3,9,9,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,3},//2
    {6,9,2,9,3,9,5,1,2,9,9,3,9,9,3,9,5,1,2,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,3},//3
    {3,9,3,9,3,9,9,9,3,9,9,3,9,9,3,9,9,9,3,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,3},//4
    {3,9,3,9,3,9,9,9,3,9,9,3,9,9,3,9,9,9,3,9,3,9,5,2,9,3,9,9,9,3,9,3,9,9,3},//5
    {3,9,3,9,5,1,2,9,3,9,9,5,2,9,3,9,9,9,3,9,3,9,9,3,9,3,9,9,9,3,9,6,1,9,3},//6
    {3,9,3,9,9,9,3,9,3,9,9,9,3,9,3,9,9,9,3,9,3,9,9,3,9,3,9,9,9,3,9,3,9,9,3},//7
    {3,9,6,1,2,9,3,9,5,1,2,9,3,9,3,9,9,9,3,9,3,9,9,3,9,3,9,9,9,3,9,3,9,9,3},//8
    {3,9,3,9,3,9,3,9,9,9,3,9,3,9,3,9,9,8,7,9,3,9,9,3,9,3,9,9,9,3,9,5,2,9,3},//9
    {3,9,3,9,3,9,3,9,9,9,3,9,3,9,3,9,9,3,9,9,5,2,9,3,9,3,9,8,1,7,9,9,3,9,3},//10
    {3,9,3,9,3,9,5,2,9,9,3,9,3,9,3,9,8,7,9,9,9,3,9,3,9,3,9,3,9,9,9,9,3,9,3},//11
    {3,9,3,9,5,2,9,3,9,9,3,9,3,9,3,9,3,9,9,8,1,7,9,3,9,3,9,3,9,9,9,8,7,9,3},//12
    {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,3,9,9,3,9,9,9,3,9,3,9,3,9,9,8,7,9,9,3},//13
    {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,3,9,8,7,9,9,9,3,9,3,9,5,2,9,3,9,9,9,3},//14
    {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,3,9,9,9,9,9,9,3,9,9,9,9,3,9,3,9,9,9,3},//15
    {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,5,2,9,8,1,7,9,9,9,9,9,9,3,9,9,9,9,9,3},//16
    {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,9,3,9,3,9,9,8,1,1,1,2,9,3,9,9,9,9,9,3},//17
    {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,9,9,9,3},//18
    {3,9,3,9,8,7,9,3,9,8,7,9,3,9,3,9,9,3,9,3,9,8,7,9,9,9,3,9,3,9,9,9,9,9,3},//19
    {3,9,3,9,3,9,9,3,9,5,1,1,7,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,9,9,3},//20
    {3,9,3,9,3,9,9,3,9,9,9,9,9,9,9,9,9,3,9,3,9,3,9,8,1,2,9,9,9,9,9,9,9,9,3},//21
    {3,9,3,9,3,9,9,3,9,8,1,2,9,9,9,9,9,3,9,3,9,3,9,3,9,3,9,8,1,2,9,9,9,9,3},//22
    {3,9,3,9,3,9,9,3,9,3,9,3,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,3,9,3,9,9,9,9,3},//23
    {3,9,3,9,3,9,9,3,9,9,9,9,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,9,9,3},//24
    {3,9,3,9,3,9,8,7,9,3,9,3,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,3,9,3,9,9,9,9,3},//25
    {3,9,3,9,3,9,3,9,9,5,1,7,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,5,1,7,9,9,9,9,3},//26
    {3,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,9,9,3},//27
    {5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7}//28
};
int plyX=1,plyY=1;/*プレイヤーの位置情報*/
/*プロトタイプ宣言*/
void map1(void);	/*マップ1表示関数*/
void control(void);/*マップ1を操作する時の操作関数*/
void second(void);/*一番目のマップでゴールした時に呼び出される関数*/
void map2(void);	/*マップ2表示関数*/
void control2(void);/*マップ2を操作する時の操作関数*/
void main(void)
{
	int i;
	LOCATE(25,12);
	printf("***ゲーム説明***");
	while(getchar()!=EOF)
	{
	while(1){
		if(GetAsyncKeyState(VK_ESCAPE))
			break;
			CLS();
			map1();
			control();

	for(i=0;i<1000000;i++);
	}
	return;
	}
}
void control(void)
{
	int i;
	int keepX=plyX,keepY=plyY;
	if(GetAsyncKeyState(VK_DOWN))
	{
		plyY+=1;
		b=12;
		r=20;
		g=30;
		yel=40;
	}
	if(GetAsyncKeyState(VK_RIGHT))
	{
		plyX+=1;
		b=10;
		r=22;
		g=30;
		yel=40;
	}
	if(GetAsyncKeyState(VK_LEFT))
	{
		plyX-=1;
		b=10;
		r=20;
		g=32;
		yel=40;
	}
	if(GetAsyncKeyState(VK_UP))
	{
		plyY-=1;
		b=10;
		r=20;
		g=30;
		yel=42;
	}
	if(stage1[plyY][plyX]!=9){
		plyX=keepX;
		plyY=keepY;
	}
	while(plyX==1&&plyY==26)/*仮のゴールに見立てた座標。ここから二番目のマップが表示される。*/
	{
		CLS();
		second();
	}
}
void map1(void)
{
	int x,y;/*配列stage1の要素数*/
    char *print_map[]={
        "  ",
        "─",//1
        "┐",//2
        "|",//3
        "┬",//4
        "└",//5
        "├",//6
        "┘",//7
        "┌",//8
        " ",//9
    };
	CLS();
	for(y=0;y<28;y++){
		for(x=0;x<35;x++){
			if(plyY==y&&plyX==x){
			COLOR(YELLOW);
			printf("%s","●");
			}else{
				printf("%s",print_map[stage1[y][x]]);
			}
		}
		printf("\n");
	}
		LOCATE(3,2);
		printf("S");/*スタート*/
		LOCATE(21,23);
		printf("W");/*ワープ*/
		LOCATE(21,25);
		printf("W");/*ワープ*/
		LOCATE(49,22);
		printf("W");/*ワープ*/
		LOCATE(57,23);
		printf("W");/*ワープ*/
		LOCATE(57,25);
		printf("W");/*ワープ*/
		LOCATE(3,27);
		printf("W");/*ワープ*/
		LOCATE(67,2);
		printf("G");/*ゴール*/

	return;
}
void second(void)
{
    int i;
	while(1)
	{
	if(GetAsyncKeyState(VK_ESCAPE))/*二番目のマップを抜けるときに使用(?)*/
		break;
    CLS();
    map2();
	control2();
	}
}
void map2(void)
{
}
void control2(void)
{
}de]

Re: 迷路作成しています…

Posted: 2013年2月24日(日) 02:06
by ball
ソースコードミスしてしまいました。
こちらです

コード:



#include<stdio.h>
#include"CScreen.h"
#include<windows.h> 

int stage1[28][69]={
// 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9 1 3 5//
 {8,1,1,1,4,1,4,1,1,1,1,4,1,1,4,1,4,1,1,1,4,1,4,1,1,4,1,1,1,4,1,4,1,1,2},//1
 {3,9,9,9,3,9,3,9,9,9,9,3,9,9,3,9,3,9,9,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,3},//2
 {6,9,2,9,3,9,5,1,2,9,9,3,9,9,3,9,5,1,2,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,3},//3
 {3,9,3,9,3,9,9,9,3,9,9,3,9,9,3,9,9,9,3,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,3},//4
 {3,9,3,9,3,9,9,9,3,9,9,3,9,9,3,9,9,9,3,9,3,9,5,2,9,3,9,9,9,3,9,3,9,9,3},//5
 {3,9,3,9,5,1,2,9,3,9,9,5,2,9,3,9,9,9,3,9,3,9,9,3,9,3,9,9,9,3,9,6,1,9,3},//6
 {3,9,3,9,9,9,3,9,3,9,9,9,3,9,3,9,9,9,3,9,3,9,9,3,9,3,9,9,9,3,9,3,9,9,3},//7
 {3,9,6,1,2,9,3,9,5,1,2,9,3,9,3,9,9,9,3,9,3,9,9,3,9,3,9,9,9,3,9,3,9,9,3},//8
 {3,9,3,9,3,9,3,9,9,9,3,9,3,9,3,9,9,8,7,9,3,9,9,3,9,3,9,9,9,3,9,5,2,9,3},//9
 {3,9,3,9,3,9,3,9,9,9,3,9,3,9,3,9,9,3,9,9,5,2,9,3,9,3,9,8,1,7,9,9,3,9,3},//10
 {3,9,3,9,3,9,5,2,9,9,3,9,3,9,3,9,8,7,9,9,9,3,9,3,9,3,9,3,9,9,9,9,3,9,3},//11
 {3,9,3,9,5,2,9,3,9,9,3,9,3,9,3,9,3,9,9,8,1,7,9,3,9,3,9,3,9,9,9,8,7,9,3},//12
 {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,3,9,9,3,9,9,9,3,9,3,9,3,9,9,8,7,9,9,3},//13
 {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,3,9,8,7,9,9,9,3,9,3,9,5,2,9,3,9,9,9,3},//14
 {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,3,9,9,9,9,9,9,3,9,9,9,9,3,9,3,9,9,9,3},//15
 {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,5,2,9,8,1,7,9,9,9,9,9,9,3,9,9,9,9,9,3},//16
 {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,9,3,9,3,9,9,8,1,1,1,2,9,3,9,9,9,9,9,3},//17
 {3,9,3,9,9,3,9,3,9,9,3,9,3,9,3,9,9,3,9,3,9,9,3,9,9,9,3,9,3,9,9,9,9,9,3},//18
 {3,9,3,9,8,7,9,3,9,8,7,9,3,9,3,9,9,3,9,3,9,8,7,9,9,9,3,9,3,9,9,9,9,9,3},//19
 {3,9,3,9,3,9,9,3,9,5,1,1,7,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,9,9,3},//20
 {3,9,3,9,3,9,9,3,9,9,9,9,9,9,9,9,9,3,9,3,9,3,9,8,1,2,9,9,9,9,9,9,9,9,3},//21
 {3,9,3,9,3,9,9,3,9,8,1,2,9,9,9,9,9,3,9,3,9,3,9,3,9,3,9,8,1,2,9,9,9,9,3},//22
 {3,9,3,9,3,9,9,3,9,3,9,3,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,3,9,3,9,9,9,9,3},//23
 {3,9,3,9,3,9,9,3,9,9,9,9,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,9,9,3},//24
 {3,9,3,9,3,9,8,7,9,3,9,3,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,3,9,3,9,9,9,9,3},//25
 {3,9,3,9,3,9,3,9,9,5,1,7,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,5,1,7,9,9,9,9,3},//26
 {3,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,9,9,9,9,9,3},//27
 {5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7}//28
};
int plyX=1,plyY=1;/*プレイヤーの位置情報*/
/*プロトタイプ宣言*/
void map1(void); /*マップ1表示関数*/
void control(void);/*マップ1を操作する時の操作関数*/
void second(void);/*一番目のマップでゴールした時に呼び出される関数*/
void map2(void); /*マップ2表示関数*/
void control2(void);/*マップ2を操作する時の操作関数*/
void main(void)
{
 int i;
 LOCATE(25,12);
 printf("***ゲーム説明***");
 while(getchar()!=EOF)
 {
 while(1){
 if(GetAsyncKeyState(VK_ESCAPE))
 break;
 CLS();
 map1();
 control();

 for(i=0;i<1000000;i++);
 }
 return;
 }
}
void control(void)
{
 int i;
 int keepX=plyX,keepY=plyY;
 if(GetAsyncKeyState(VK_DOWN))
 {
 plyY+=1;
 b=12;
 r=20;
 g=30;
 yel=40;
 }
 if(GetAsyncKeyState(VK_RIGHT))
 {
 plyX+=1;
 b=10;
 r=22;
 g=30;
 yel=40;
 }
 if(GetAsyncKeyState(VK_LEFT))
 {
 plyX-=1;
 b=10;
 r=20;
 g=32;
 yel=40;
 }
 if(GetAsyncKeyState(VK_UP))
 {
 plyY-=1;
 b=10;
 r=20;
 g=30;
 yel=42;
 }
 if(stage1[plyY][plyX]!=9){
 plyX=keepX;
 plyY=keepY;
 }
 while(plyX==1&&plyY==26)/*仮のゴールに見立てた座標。ここから二番目のマップが表示される。*/
 {
CLS();
 second();
 }
}
void map1(void)
{
 int x,y;/*配列stage1の要素数*/
char *print_map[]={
 " ",
 "─",//1
 "┐",//2
 "|",//3
 "┬",//4
 "└",//5
 "├",//6
 "┘",//7
 "┌",//8
 " ",//9
 };
 CLS();
 for(y=0;y<28;y++){
 for(x=0;x<35;x++){
 if(plyY==y&&plyX==x){
 COLOR(YELLOW);
 printf("%s","●");
 }else{
 printf("%s",print_map[stage1[y][x]]);
 }
 }
 printf("\n");
 }
 LOCATE(3,2);
 printf("S");/*スタート*/
LOCATE(21,23);
 printf("W");/*ワープ*/
LOCATE(21,25);
 printf("W");/*ワープ*/
LOCATE(49,22);
 printf("W");/*ワープ*/
LOCATE(57,23);
 printf("W");/*ワープ*/
LOCATE(57,25);
 printf("W");/*ワープ*/
LOCATE(3,27);
 printf("W");/*ワープ*/
LOCATE(67,2);
 printf("G");/*ゴール*/

 return;
}
void second(void)
{
 int i;
 while(1)
 {
 if(GetAsyncKeyState(VK_ESCAPE))/*二番目のマップを抜けるときに使用(?)*/
break;
 CLS();
 map2();
 control2();
 }
}
void map2(void)
{
}
void control2(void)
{
}

Re: 迷路作成しています…

Posted: 2013年2月24日(日) 08:36
by みけCAT
インデント気をつけた「つもり」ですか…
ごめんなさい。

Re: 迷路作成しています…

Posted: 2013年2月24日(日) 10:08
by softya(ソフト屋)
投稿前にプレビューで確認してくださいね。
インデントに関してはよく分かっていらっしゃらない様なので、beatleさん作成の投稿前チェックリストを御覧ください。
http://uchan.net/w/index.php?mixcpp%2F% ... 5%B9%A5%C8

それと、抜けられないのはmainから抜けないと終了できないからです。
こういうプログラム構造にすると後々ややっこしいだけなので、今現在いるマップをポインタで管理することをオススメします。
そうすれば、mainが複数マップで兼用できます。