🧼C, C++/자체제작 프로그램및 배포

2차원배열 콘솔 게임 C++

Mawile 2020. 11. 15.
728x90

 

개발환경 >> DevCpp

언어 >> C++11

운영체제 >> Windows10

 

 


 

 

바야흐로... 내가 C언어 2차원 배열 막 배우기 시작한 시절....

아래와 같은 프로그램을 만들고싶었는데

플레이어가 움직인 뒤, 해당 자리가 빈자리로 초기화되는 것 때문에 결국 포기했었던 그 부분을 구현했다...

 

지금 한 번 더 만들어보니 진짜 쉬웠다... 뭐징......ㅋㅋㅋㅋ.......

이걸로 왜 고생을 했는지 지금은 뭔가 모르겠다...ㅋㅋㅋㅋ.....ㅋㅋㅋㅋㅋ.......

어쨌든 옛날에 구현하고 싶었던 프로그램을 구현해서 기분이 좋다~~

 

 

 

 

 

 

 

 


 

728x90

 

 

 

 

[[[   소스코드   ]]]

#include <iostream>
#include <conio.h>
using namespace std;

#define MAX 20 //최대 맵크기

void CreateARC(char arr[MAX][MAX]){ //장애물 생성함수
	arr[2][3]='z'; //'z' 장애물 , 'a' 빈공간
	arr[5][1]='z';
	arr[7][2]='z';
	arr[9][5]='z';
	arr[2][7]='z';
}

int main(){
	register char arr[MAX][MAX]={0},as;
	int x=0,y=0,i,j,cnt; //x랑y는 플레이어의 좌표입니다
	
	for(i=0;i<MAX;i++) for(j=0;j<MAX;j++) arr[i][j]='a'; //빈공간으로채우기
	
	CreateARC(arr); //장애물생성
	
	while(1){
		cnt=0; //게임을 끝낼지 판단할 변수초기화
		for(i=0;i<MAX;i++) for(j=0;j<MAX;j++) if(arr[i][j]=='a') cnt++; //아래와 위와같다
		if(MAX*MAX==cnt) return 1; //게임을 끝낼지 판단할 변수를 계산
		system("cls");
		for(i=0;i<MAX;i++){
			for(j=0;j<MAX;j++){
				if(arr[i][j]=='a') cout << "□";
				if(arr[i][j]=='z') cout << "■";
				if(x==j&&y==i) cout << "\b\b♠"; //2바이트문자는 백스페이스 두번
			}
			cout << endl;
		}
	
		as=getch();
		if(as=='w'&&y>0) y--;
		else if(as=='s'&&y<MAX-1) y++;
		else if(as=='a'&&x>0) x--;
		else if(as=='d'&&x<MAX-1) x++;
		else if(as==' '&&arr[y][x]=='z') arr[y][x]='a'; //스페이스바를 누르면 빈공간으로바뀐다
	}
}

 

 

 

 

 

그럼 감사합니다!!

 

 

728x90

댓글