컴공러가심심해서만든2048게임C코드
게시글 주소: https://orbi.kr/0004914769
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
void plus(int (*plate)[4], char *input) // 이동 시 서로 붙어 있는 수가 있으면 서로 더해주기 위한 함수
{
int i, j;
if((*input=='w')||(*input=='W')) // 위로 몰아넣으므로, 맨 위에 붙어있는 수들부터 차례대로 더한다.
for(i=0; i<3; i++)
{
{
for(j=0; j<4; j++)
{
if(plate[i][j]==plate[i+1][j])
{
plate[i][j]*=2;
plate[i+1][j]=0;
}
}
}
}
else if((*input=='s')||(*input=='S')) // 아래로 몰아넣으므로, 맨 아래에 붙어있는 수들끼리 차례대로 더한다.
for(i=3; i>0; i--)
{
{
for(j=3; j>=0; j--)
{
if(plate[i][j]==plate[i-1][j])
{
plate[i][j]*=2;
plate[i-1][j]=0;
}
}
}
}
else if((*input=='a')||(*input=='A')) // 원리는 같다.
for(j=0; j<3; j++)
{
{
for(i=0; i<4; i++)
{
if(plate[i][j]==plate[i][j+1])
{
plate[i][j]*=2;
plate[i][j+1]=0;
}
}
}
}
else if((*input=='d')||(*input=='D')) // 원리는 같다.
for(j=3; j>0; j--)
{
{
for(i=3; i>=0; i--)
{
if(plate[i][j]==plate[i][j-1])
{
plate[i][j]*=2;
plate[i][j-1]=0;
}
}
}
}
}
void move(int (*plate)[4], char *input) // 이동 방향으로 수들을 모조리 몰아넣기 위한 함수
{
int i, j, k;
if((*input=='w')||(*input=='W'))
for(k=0; k<10; k++) // 충분히 여러번 반복해서 완전히 몰아넣게 하기 위함
for(i=0; i<3; i++)
{
{
for(j=0; j<4; j++)
{
if(plate[i][j]==0)
{
plate[i][j]=plate[i+1][j];
plate[i+1][j]=0;
}
}
}
}
else if((*input=='s')||(*input=='S'))
for(k=0; k<10; k++)
for(i=3; i>0; i--)
{
{
for(j=3; j>=0; j--)
{
if(plate[i][j]==0)
{
plate[i][j]=plate[i-1][j];
plate[i-1][j]=0;
}
}
}
}
else if((*input=='a')||(*input=='A'))
for(k=0; k<10; k++)
for(j=0; j<3; j++)
{
{
for(i=0; i<4; i++)
{
if(plate[i][j]==0)
{
plate[i][j]=plate[i][j+1];
plate[i][j+1]=0;
}
}
}
}
else if((*input=='d')||(*input=='D'))
for(k=0; k<10; k++)
for(j=3; j>0; j--)
{
{
for(i=3; i>=0; i--)
{
if(plate[i][j]==0)
{
plate[i][j]=plate[i][j-1];
plate[i][j-1]=0;
}
}
}
}
}
void main()
{
int plate[4][4]={0};
int before[4][4]={0};
int i, j, width, vertical, count=0, first=0, finish=0;
char input;
srand((unsigned)time(NULL));
width=rand()%4;
vertical=rand()%4;
printf("Welcome to the 2048 game.\n\n");
printf("coded by 김성보\n\n");
printf("w : up, s : down, a : left, d : right, b : back\n\n");
printf("Please press any key to start\n\n\n");
scanf("%c", &input);
fflush(stdin);
system("cls");
restart:
for(i=0; i<4; i++)
for(j=0; j<4; j++)
plate[i][j] = 0;
plate[width][vertical]=2; // 맨 처음 시작할 때 아무 칸에서나 랜덤하게 2가 생겨나게 하기 위함
while(1)
{
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
if(plate[i][j]!=0)
{
printf("[%5d]", plate[i][j]);
}
else
printf("[ ]");
}
printf("\n\n\n\n\n");
}
input = getch();
fflush(stdin);
system("cls");
for(i=0; i<3; i++)
{
for(j=0; j<=3; j++)
{
if(plate[i][j]==plate[i+1][j]) // 세로로 같은 숫자가 서로 붙어있는 경우가 하나라도 있으면 finish=1
finish=1;
}
}
for(j=0; j<3; j++)
{
for(i=0; i<=3; i++)
{
if(plate[i][j]==plate[i][j+1]) // 가로로 같은 숫자가 서로 붙어있는 경우가 하나라도 있으면 finish=1
finish=1;
}
}
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
if(plate[i][j]==0) // 한 칸이라도 비어있으면 finish=1
finish=1;
}
}
if(finish==0) // 같은 숫자가 서로 붙어있는 경우가 아얘 없거나, 비어있는 칸도 없어서 더 이상의 게임 진행이 불가능한 경우
break;
finish=0;
if(input=='w'||input=='W'||input=='a'||input=='A'||input=='s'||input=='S'||input=='d'||input=='D')
{
count=0;
first=1;
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
before[i][j]=plate[i][j];
}
}
move(plate, &input);
plus(plate, &input);
move(plate, &input);
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
if(before[i][j]!=plate[i][j]) // 바로 전의 칸과 현재의 칸이 완벽히 같은지를 구별하기 위함
count=1;
}
}
if(count==0)
goto end;
width=rand()%4;
vertical=rand()%4;
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
if(plate[i][j]==0)
count=1;
}
}
if(count==1)
while(1)
{
if(plate[width][vertical]==0)
{
plate[width][vertical]=2;
break;
}
width=rand()%4;
vertical=rand()%4;
}
end:
count=0;
}
else if(input=='b'||input=='B')
{
if(first==0)
printf("맨 처음에는 뒤로 갈 수 없습니다!\n\n");
else if(count!=1)
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
plate[i][j]=before[i][j];
before[i][j]=0;
}
}
else
printf("뒤로가기는 바로 전의 상태로밖에 돌아갈 수 없습니다.\n\n");
count=1;
}
}
system("cls");
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
printf("[%5d]", plate[i][j]);
}
printf("\n\n\n\n\n");
}
printf("\n\nGAME OVER\n\n");
printf("r : restart, e : exit game");
scanf("%c", &input);
while(1)
{
if(input=='r'||input=='R')
{
system("cls");
goto restart;
}
else if(input=='e'||input=='E')
{
system("cls");
break;
}
}
}
// 진짜 과제하러 갈게요
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
요새 아니내가뭘의 후계자가 되고싶은사람이 보이는거같은데 0
제대로본거 맞을려나
-
다 자나 2
ㅈㄱㄴ
-
스스로의 외모도 두뇌도 성격도 환경도 다 마음에 들지 않는다…
-
예전에 한 7년 전인가? 악플러 새끼 정신병 도저서 한창 염병 떨 적에 있었던...
-
룡
-
샴페인이랑 와인 마셨어요 헤헤
-
제가 증명함 ㅎㅎ 17수능 가4 18수능 가3 19 나1 20 나1(백분위98)...
-
정신나갈것같애 4
수열만들어본적없는데
-
5모 확통 0
그냥 ㅈㄴ 어려워서 다 못풀면 좋겠다 공통은 괜찮은데 확통이 진짜 짜증나네
-
얘가 저한테 한 말들 사귀면 내가 을이 될 거 같아 난 뭔가 예쁜데도 미래가 없는...
-
연고티비 역사상 최초의 고교 미진학자이자 수능영어 5등급 ㅇㄹㅂ 글쓴 거...
-
물국어기원 4
노력충도 1등급 받아보자
-
엌ㅋㅋㅋㅋㅋ ㅋㅋㅋㅋㅋ ㅋㅋㅋㅋㅌ
-
우울한 거는 결국 스스로가 해결해야 할 거 같음 나도 그래서 일단 넷상에서...
-
현생에서 드러내지 말고 ..? 현실에서 드러내면 딱 반응 두 부류 1. 나를...
-
26수능은 여러분을 환영합니다 어감부터 좋잖아요? "26"
-
30만에 완전양도 합니다 쪽지 부탁드립니다
-
국어 : 정석민t 비독원,유대종t 인셉션 문학,전형태t 언매올인원 수학 : 현우진t...
-
모질이좋아지는약
-
평범하게 살기도 어렵다 (<<< 어느정도 맞는 말 같긴 함. 평범해 보여도 다들...
-
바로 전 24가 핵불이여서 이번엔 좀 쉽게 낼거같은데 23때처럼 시험 망쳐놓진 않겠죠?
-
설의, 대구, 도치, 비유는 찾기 쉬운데 감정이입, 자연물 활용, 계절 관련 등...
-
소득비례해서 최대로 낸다고 했었는데 궁금해서 검색해봣더니 최소 ”월“ 1억 2천만원...
-
취클 들으려고 하는데요 예습하고 강의를 듣는게 맞는데 예습을하고 업로드까지 기다리는...
-
공부 잘해서 좋은 직업 가져서 계층 상승이동하는게 가능하려나
-
어디갓누
-
마더텅 빨간책 0
수학 마더텅 빨간책처럼 모의고사 연도별로 모아둔 기출문제집 있나요?
-
제발
-
메인글 댓글보고 귱금하서ㅓ +세후임
-
바퀴벌레 어캐잡아요 ㅈㄴ큰데 하..
-
현우진 떴다! 2
주인장 왤케 오랜만
-
신입크루랑 같이 나온 영상.. 왜지?(고대 역사교육,사회학과) 그나저나 나도 수능날...
-
https://m.blog.naver.com/moeblog/223433755832...
-
ㅇㅈ 9
우주는 인류에게 끊임없는 탐구와 발견의 대상이다. 우리가 살고 있는 지구 외의...
-
에이 그냥 쳐도 900은 되겠지 하고 그냥 갔는데 Lc 하면서 Rc 해도 되는지...
-
오노추 5
님들이 생각하는 그거 아님요
-
수능끝나고 계획 7
메디컬가면 - 탈르비하기 - 과외구하기 - 헬스등록하기 메디컬 못가면 - 탈르비하기...
-
오늘 알아봤는데 광운대 재입학 올해는 불가능이라네.....
-
독서는 독서론 어휘 문제 없는 짧은 지문 어휘 문제 잇는 짧은 지문 가, 나 통합형...
-
그냥 적당히 수능 잘 본 티 내고 다니기 원서 직접적으로는 얘기 안하고 고민하는 것...
-
오늘은 N티켓 시즌 2 배송 받은거 바로 풀어봄 수1,2 나같은 허허허수를 위한 딱...
-
요즘 우울한데 한바탕 짜내야 다시 괜찮아질듯
-
김다미 넘 예뻐 1
내스타일
-
3모 전후로 지인선 n제를 까먹고 안하다가 5모가 가까워져서 하나 풀어봄 52분...
-
사람없넹 9
쿠키런 하러 가야지
-
수학 N제, 브릿지를 벅벅
-
물리? 1
물리 기출 끝내면 6모 몇 정도 뜰까요? 4나 5 예상하는데..
-
이순신은 어찌보면 무예에 미쳤는데 나<---얘는 그냥 미친놈같음 ㅋㅋ
-
기출무용 사설만능 vs 기출만능 사설무용 양자택일이면 당연히 기출. 아무리 좋은...
-
. 0
노래 듣다가 자야겠다 희히.. 몬가 저기압
점수계산도 해주세요!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
후덜ㅠㅡㅜㅠ 뭉과인데 컴퓨터 배우고 싶네용ㅎㅎㄹ
왜 정보통신계열은 교차지원이 가능한가 궁금했었는데, 직접 배워보니 여태까지 배운 내용들은 전부 수1 개념이면 충분하더라구요 ㅋㅋ
우왕.. 꿈은 문과 분야에서 확고한 편이라 다음에 취미로 꼭 배워보려고요ㅎㅎ 수학은 그나마 희망적이네요..ㅋㅋㅋ간-단한 응용 프로그램 정도 손댈 수 있으려면 꽤 많이 공부해야 하려나요ㅎㅎ
네 ㅋㅋ 보통사람들이 인식하는 '프로그램'이라는 걸 만들려면 꽤 많이 이해하고 공부하고 연습해야해요 ㅎㅎ
제가 컴퓨터에 관심많아서 중학생때 혼자 c언어책 사서 따라하고 그랬는데
지금 독학재수생이거든요
재수목표가 고사국, 한양대 소프트, 성균관대 소프트 이 쪽을 목표로 했는데
만약 안된다면 컴공쪽도 생각하는데
컴퓨터공학과 하구 소프트웨어학과랑 배우는 과목이나 방향자체가 많이 다른가요?
제가 특히 보안쪽에 관심이 많거든요!!
일단 울학교 컴공과 소프트를 비교하자면, 배우는 과목의 차이가 거의 없습니다.
다만, 소프트는 장학금을 받으면서 기숙사 배정이 학점 기준 없이 바로 배정이 가능하고, 컴공보다는 조금 더 빨리 배우며, 방학 때 삼성에 불려가서 프로젝트 하면서 무언가 더 배우는게 있다고 합니다.
졸업한 뒤에 현업으로 뛰어들었을 때, 초기에는 소프트가 컴공보다는 더 적응력이 클 거 같네요 ㅋㅋ
실례지만, 서울이신가요? 수원이신가요? 제가 지원한 곳이라..
수학교육과, 컴퓨터교육과를 제외한 모든 자연계열 과는 수원에 있습니다
이과생인데 무슨 소리인지 모르겠다.
발 닦고 잠이나 자야겠다..
주무세요 ㅋㅋㅋ
오랜만에보네 샵인클루드 스트디오어이취
ㅋㅋㅋ