迷路作成しています…
-
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;
}
壁の当たり判定がうまくいきません。
初期位置から動きません…
よければ誤りを指摘してもらえないでしょうか?
#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;
}
-
ball
Re: 迷路作成しています…
#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;
}- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 迷路作成しています…
謎の変数p,q,b,r,g,yelについて説明してもらえますか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 迷路作成しています…
ソースコードをインデントすることをおすすめします。
#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;
}複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 迷路作成しています…
初期位置(3,2)のx座標に±2した位置、およびy座標に±1した位置に9のマスがないため、動かないのだと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
-
ball
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 迷路作成しています…
実は、同じ環境がないので動作確認できないのです。
あと、無駄と思われる0データがたくさんあるのもプログラムを読みづらくしている原因です。
いま、どんな環境でも動くように書き直していますのでしばらくお待ちください。
あと、無駄と思われる0データがたくさんあるのもプログラムを読みづらくしている原因です。
いま、どんな環境でも動くように書き直していますのでしばらくお待ちください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ball
Re: 迷路作成しています…
申し訳ありません。
これを機に第三者が見ることを前提とした、コメントアウト、変数の名前、インデントを正しくつける練習をしてみようと思います。
迷路が完成したら、そのソースを貼り付けさせていただいてもよろしいでしょうか?
これを機に第三者が見ることを前提とした、コメントアウト、変数の名前、インデントを正しくつける練習をしてみようと思います。
迷路が完成したら、そのソースを貼り付けさせていただいてもよろしいでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 迷路作成しています…
とりあえず、Screen.hが無い環境でも動くようにしてみましたが迷路の形が変ですね。これは私のミスでしょうか?
で、キー入力された方向には動くようになっています(横に行けないので横は未確認です)。
カラーがないのと描画が遅いのは仕様です。大幅改造したので参考程度にして下さい。
気になったところ。
・0のデータが無意味なところ。工夫すれば不要です。
・x,yの使い方が画面のx,yと逆
・変数名が短すぎる。
で、キー入力された方向には動くようになっています(横に行けないので横は未確認です)。
カラーがないのと描画が遅いのは仕様です。大幅改造したので参考程度にして下さい。
気になったところ。
・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)
{
}
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ball
Re: 迷路作成しています…
書いていただいたソースをもとに新しく書いてみました。
ワーピ機能をつけようと、control関数の中に
if(stage1[plyY][plyX]==stage1[1][26])
{
plyX=7;
plyY=26;
}
としてみたのですが、うまくいきません。
やり方がまずいのでしょうか?
何度もすみません。
ワーピ機能をつけようと、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)
{
}- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 迷路作成しています…
この
if(stage1[plyY][plyX]==stage1[26][1])
のだと配列の値がい等しい時ですよ。
調べたいのは座標じゃないんでしょうか?
if(stage1[plyY][plyX]==stage1[26][1])
のだと配列の値がい等しい時ですよ。
調べたいのは座標じゃないんでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 迷路作成しています…
座標を比べるのはxとyの座標を比べるしか無いです。つまり、121行目でもやっている(x==a)&&(y==b)の形しかありません。
あとインデントが乱れているので気をつけて下さい。 → 私が整えたはずのところまで乱れています。
あとインデントが乱れているので気をつけて下さい。 → 私が整えたはずのところまで乱れています。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ball
Re: 迷路作成しています…
if((plyX==1)&&(plyY==26))
{
plyX=8;
plyY=26;
}
試しにこれでやると成功しました。
ありがとうございます。
インデント気を付けます。
{
plyX=8;
plyY=26;
}
試しにこれでやると成功しました。
ありがとうございます。
インデント気を付けます。
-
ball
Re: 迷路作成しています…
おかげさまで一番目のマップはうまくいきそうです。
ゴールマスを踏んだら二番目のマップに進むように関数に呼び出したのですが、
ESCキーを入力して抜ける様にできないです。
度々申し訳ありませんが、よければご指摘いただけますか?
インデントも気を付けたつもりです。
ゴールマスを踏んだら二番目のマップに進むように関数に呼び出したのですが、
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]-
ball
Re: 迷路作成しています…
ソースコードミスしてしまいました。
こちらです
こちらです
#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)
{
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 迷路作成しています…
投稿前にプレビューで確認してくださいね。
インデントに関してはよく分かっていらっしゃらない様なので、beatleさん作成の投稿前チェックリストを御覧ください。
http://uchan.net/w/index.php?mixcpp%2F% ... 5%B9%A5%C8
それと、抜けられないのはmainから抜けないと終了できないからです。
こういうプログラム構造にすると後々ややっこしいだけなので、今現在いるマップをポインタで管理することをオススメします。
そうすれば、mainが複数マップで兼用できます。
インデントに関してはよく分かっていらっしゃらない様なので、beatleさん作成の投稿前チェックリストを御覧ください。
http://uchan.net/w/index.php?mixcpp%2F% ... 5%B9%A5%C8
それと、抜けられないのはmainから抜けないと終了できないからです。
こういうプログラム構造にすると後々ややっこしいだけなので、今現在いるマップをポインタで管理することをオススメします。
そうすれば、mainが複数マップで兼用できます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。