컴공러가심심해서만든2048게임C코드
게시글 주소: https://image.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를 선물하세요.
-
수갤에서놀다 오르비왔는데 님들 점수에비해 왜이리 낮게잡으세요? ㅋㅋ 2
기만자성님들 ㄷㄷ해 진짜 ㅋㅋ
-
저는 가야할것같은데 정시로 성대갈수있나요?ㅜ 과는 전기전자 넣었어요 정시로가면 다 기공넣을거같구요
-
이정도면 올해 어디갈수잇나요?
-
어디까지 합격할수있나요?삼수라 위험하게원서는 못쓰는데...나군에 성대 시즈탱크 박고...
-
연고대 공대 아슬하게라도 갈 수 있나요?? ㅠㅠㅠ 평소에 안해던 실수를 수능날 다 했네요 ㅠ
-
전기가 523이라니;;
-
물2가 2등급 컷이어서 불안하네요;;
-
ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 한양대 학종 정보템 예비1번나왔는데ㅠㅠㅠㅠㅠㅠㅠ...
-
이관데 어디대학정도갈수있을까요 ㅠ
-
캠프기간 : 2015년 1월 19일(월) ~ 20일(화) [1박 2일] 모집대상 :...
-
"제 2회 고려대학교 산업공학캠프"를 소개합니다!!! 0
캠프기간 : 2015년 1월 19일(월) ~ 20일(화) [1박 2일]모집대상 :...
-
하 1번이네요 13명밖에안뽑아서 될지안될지 감이안오니까 오늘하루 공부집중이...
-
숭실대학교 정시 3
숭실대학교 정시로 지원할 수험생입니다. 제가 지금 관심있는 과는...
-
숭실대학교 1
숭실대학교 특성화 학과들이 있다고 하드라구요 전통있는 컴퓨터공학부도 있지만 내년부터...
-
분해능이 좋다랑 같은건 (크다/작다) (높다/낮다) 먼가요
-
안녕하세요?J&S A형 30번 15제 문제 및 해설 작성 중 멘붕와서 놀러온...
-
숭실대학교 IT관련 관심많아서 둘러보고 있는데 소프트웨어학부말고도...
-
내년부터 숭실대학교 소프트웨어학부? 스마트시스템소프트웨어학과 생긴다고 하는데 기존에...
-
프로그래밍기초와실습 (C) 공학컴퓨터프로그래밍 (Python) 창의적공학설계...
-
여태까지 배운 모든 전공과목에서 행렬 여러가지 수열 알고리즘과 순서도 다항함수의...
-
#include #include #include #include void...
-
2018학년도부터 프로그래밍을 수능과목에 넣을지 고민중이라던데 18
그 때까지 내 뇌가 잘 보존되어 있으면 프로그래밍 모의고사도 같이...
-
#include #include using namespace std;int...
-
이번에 수능보는 이과생인데요 공대 과 추천좀 부탁드립니당.
-
부모님께서는 간호과원하세요 ㅠㅠ 아무래도 전문직이랄까? 재취업도가능하고...
-
기술고시 5급 기계직과변리사 를 목표로 한다면 둘중 어느쪽이 합격가능성이...
-
이과 13111이면 23
어느 대학까지 갈 수 있나요?14111 혹은 15111로는 인서울 불가능하겠죠?
-
수시 5개 고른기회,기회균등 쓰고 1개 안전빵이라 생각하고 담임쌤이랑 경북대 기계...
-
공대중 경쟁률 젤 낮네 4.3:1....님드라 원래 그런거임????전기정보...
-
논술로 지금 인하공대 항공우주 항공대 항우기 단대 파이버시스템공 서울과기대 기계쓰고...
-
9월이 이렇게 나왔는데 계속성적은 오르는 중이라 수능때는 얼마나 잘 나올 지도...
-
학생부교과로 수시지원을 하려는 현역 입니다 인하대랑 홍대 화공중에 어떤게 좋을까요?...
-
공대랑 간호대 사이에서 매우 ㅠ고민중인 고3 남학생입니다. .공대는 이과 남자들의...
-
올해 문과로 전과해서 재수중인데요 공대 쪽이 다시 눈에 밟혀서 그러는데자연계 수리...
-
서울대 기계 vs 전기정보 vs 재료 비교한다면요? 5
입결등등 따져봤을때 순서가 어떻게 되나요?기, 전이 더 높을것 같긴 한데 둘...
-
동국대 기계 vs 경희대 기계 - 어디가 좋을지 의견 부탁드려요~ 1
동국대 기계 vs 경희대 기계 내신 1.3정도 입니다. 연대 한양대 성대 중앙대...
-
이과생 2/2/2//2/3/, 2/2/2//1/2 라인 좀 알려주세요!! 1
제 동생이 이번에 수능을 치는데 제가 문과생이라 도움을 줄 수 가 없어서오르비에...
-
동국대 기계 vs 경희대 기계 - 어디가 좋을지 의견 부탁드려요~ 4
동국대 기계 vs 경희대 기계 내신 1.3정도 입니다. 연대 한양대 성대 중앙대...
-
인서울 공대에 가고 싶습니다 (전역 후 문과->이과 전과) 3
안녕하세요 고민 끝에 질문올립니다. 군생활 2년 가까이 하면서 고민 끝에 공대에...
-
제가 고3이라 이번에 수시접수를 할라는데 대부분은 논술이고요.... 보는 대학은...
-
설곽대 아주대 3
설곽대 MSDE랑 아주대 화공중에 인풋아웃풋 비교하면 어디가 더 나을까요? 설곽대랑...
-
ㅈㄱㄴ 중앙대 사회기반시스템공학부 어떤거 공부하고, 취업방향은 어떻게 되나요?중앙대...
-
너무 힘들었습니다.(15년 수능을 치는 모든 사람들에게) 19
안녕하세요 지금 연세대학교 공대에 재학중인 14학번 새내기입니다.이제 수능도...
-
성균관대랑 한양대학교 모두 컴퓨터공학과랑 소프트웨어학과가 개설되어있던데, 1....
-
수시 상향 0
간단히 뭐좀 물어볼게요 현역 이고, 지방 일반고 이과 여자 인데 90명 남짓한...
-
서울대 버리려다가 혹시 1차 합격할 수도 있고..구술면접에는 수학관련제시문이라...
-
공대내신! 0
중대 시립대 공대 내신어느정도되야 좀 희망있을까요?ㅠ화공이요
-
중대 융합공학 6
내신1.29인데 중대 융합공학 교과전형이랑 시립대 화공 학생부종합전형가능할까요ㅠㅠ...
-
여러분 질문이요 0
제가 수시 나대다가 망치고 수능 망쳐서 원래 갈 수 있던 대학의 한 2등급 아래로...
-
이과 내신 2.1인데 서울권 교과나 종합으로 어디 괸찮은데좀 알려주라...ㅜ 11
지금 수시원서경북대 교과경북대 기균종합부산대 기균( 인하대 경희대 중앙대 중에...
점수계산도 해주세요!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
후덜ㅠㅡㅜㅠ 뭉과인데 컴퓨터 배우고 싶네용ㅎㅎㄹ
왜 정보통신계열은 교차지원이 가능한가 궁금했었는데, 직접 배워보니 여태까지 배운 내용들은 전부 수1 개념이면 충분하더라구요 ㅋㅋ
우왕.. 꿈은 문과 분야에서 확고한 편이라 다음에 취미로 꼭 배워보려고요ㅎㅎ 수학은 그나마 희망적이네요..ㅋㅋㅋ간-단한 응용 프로그램 정도 손댈 수 있으려면 꽤 많이 공부해야 하려나요ㅎㅎ
네 ㅋㅋ 보통사람들이 인식하는 '프로그램'이라는 걸 만들려면 꽤 많이 이해하고 공부하고 연습해야해요 ㅎㅎ
제가 컴퓨터에 관심많아서 중학생때 혼자 c언어책 사서 따라하고 그랬는데
지금 독학재수생이거든요
재수목표가 고사국, 한양대 소프트, 성균관대 소프트 이 쪽을 목표로 했는데
만약 안된다면 컴공쪽도 생각하는데
컴퓨터공학과 하구 소프트웨어학과랑 배우는 과목이나 방향자체가 많이 다른가요?
제가 특히 보안쪽에 관심이 많거든요!!
일단 울학교 컴공과 소프트를 비교하자면, 배우는 과목의 차이가 거의 없습니다.
다만, 소프트는 장학금을 받으면서 기숙사 배정이 학점 기준 없이 바로 배정이 가능하고, 컴공보다는 조금 더 빨리 배우며, 방학 때 삼성에 불려가서 프로젝트 하면서 무언가 더 배우는게 있다고 합니다.
졸업한 뒤에 현업으로 뛰어들었을 때, 초기에는 소프트가 컴공보다는 더 적응력이 클 거 같네요 ㅋㅋ
실례지만, 서울이신가요? 수원이신가요? 제가 지원한 곳이라..
수학교육과, 컴퓨터교육과를 제외한 모든 자연계열 과는 수원에 있습니다
이과생인데 무슨 소리인지 모르겠다.
발 닦고 잠이나 자야겠다..
주무세요 ㅋㅋㅋ
오랜만에보네 샵인클루드 스트디오어이취
ㅋㅋㅋ