컴공러가심심해서만든2048게임C코드
게시글 주소: https://iu.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를 선물하세요.
-
ㅈㄱㄴ
-
재수1년 커리 2
국어: 김민정 풀커리(이분현강듣고 성적이 많이 올라서 그대로함) 수학: 이창무...
-
이창무 현강 0
창무쌤 현강 자료 뭐 있나요??
-
이창무쌤 시대인재 심화특강 현강 자료 뭐뭐 받나요?
-
1등급 성적표 수학만 나오게 찍어서 내도 됨? 그리고 현강생용 자료는 어느정도나 됨?
-
시대인재 라인업 4
카이 i 유신 황용일 권경수 김성호 배경빈 한세빈 이신혁 최정아 신지호 이윤희...
-
인강이랑 어떤점이 다른가요? 차이 심한가요?
-
이창무 현강 4
99%반은 백분위 99% 이상만 가는건가요 아님 1등급 성적표에 시험을 보는건가요
-
이창무 선생님은 그래프로 직관적인(?) 풀이 한다고 듣기만 했는데 실제로 들어보진...
-
근데 운 좋은 정답 2개와 계산 실수 2개를 포함한...
-
문해전 강의랑 병행하면 이창무 풀이 장점 조금은 체득 가능? 0
수슐랭은 ㅆㄱㄴ이라던데
-
ㄷㄷ 국어 유대종 1타 수학 배성민 2타 복귀 이창무 5타 ㄷ ㄷ ㄷ 갓대종 정작 본인 김승리
-
심특은 못들을거 같아서 문해전만 할거 같은데 강의는 듣는게 좋나요?
-
마지막 n제로 풀려고 하는데 뭐가 더 나음? 드릴1,2,워크북,4규만 함
-
여태 푼 문제(근데 심특밖에 안 함) 본인나름 선별해서 100문제 회독가능하게...
-
배송비 무료 강의무료 걍 ㅎㄷㄷ 킹콩식 박리다매 하시네 (알밥 아닙니다)
-
클모 1회 레전드 11
그.... 이창무 연구소는 없나?? 5번이?????
-
지금 수1 뉴런이랑 531하이퍼 풀었는데 드릴이랑 문해전이랑 수분감중에 뭐할까?...
-
드릴 4규 이해원 문해전
-
지금도 수학을 못하지만 그때는 더 못했었는데 그때 느낀 감상은 그냥 30문제 짜리...
-
이창무쌤 심특 9
죄수생인데 이창무쌤 심특 모르는 문제도 해설 보면 다 풀리던데 강의 틀린 문제만...
-
이건.. 민심이... 회생불가네요..
-
현강 질문 2
김동욱썜/ 이창무쌤 현강 다니시는 분 !!!!!!!!!! 수업내용 구성 좀...
-
대성패스 안사서 책만사고 문제만 풀려했는데 강의도 듣는게 좋나요?
-
심화특강vs뉴런 1
뭐가 더 낫나요? 클맥n제는 문제만 풀거고 문해전도 듣긴할건데 이번에 심화특강...
-
박광일 백문일답 2018 1000원 마더텅 2020 국어 화작 새책 2000원...
-
[1] Intro : 제가 아는 연세대 의대생 중 이창무 쌤을 안들은 사람이...
-
미적 개념 2
바이블 인투더수능이론 이창무 개정상 심특 중 추천좀ㅎㅎ 재수생이여
-
쪽지 주세요
-
현우진 드릴 / 권경수 기벡 / 박종민 기벡 / 이창무 기벡 중에 뭐 들을까요?
-
반수러고 미2 기벡 확통 심특+기벡 뉴런 하고 기출돌릴때 뭐 들을 지 고민이에여...
-
개념-실전-고난도 이런 커리큘럼 말고 심특으로 한방컷 해보고싶어서 작년부터 심특을...
-
이거 풀어보신분 있으신가요? 퀄은 어떤가요?
-
21 30대비용 강의문제집 뭐뭐있나요? 현우진쌤은 드릴이고 나머지쌤들은 모르겟져용
-
이창무 질문 8
원래 이번 6평에서 1등급받고 창무짱 현강 갈라고 대기도 넣어놨는데 2등급 84점을...
-
이창무 CLimax Episode 2 결국 사서 풀어보았습니다..!! 1
오늘 드디어 에피소드 2를 큰맘먹고 샀던거 배송 받았습니다..!! 양승진T 실모나...
-
http://www.sungji.com/Teacher2014/Teacher2014_L...
-
문과가 들어도 무방한가요?? P.S : 평가원시험 전부 96밑으로 내려간 적 없습니다.
-
예비 고3이고 모의고사 2-3등급 나와요. 알텍 듣고 있고 문해전 업로드하면...
-
왜 인강으로 찍지?.? 인강은.. 좀 졸린데 ㅠㅠ
-
올해 대성 프패를 등록해서 이창무쌤 이나 한석원쌤 들으려합니다.미적2랑 확통은...
-
이창무 문제해결전략 이과 3권 혹시 안푸는데 가지고 계신분 없나요ㅠㅠ 파실분 있으면...
-
항상 고3때부터 수학푸는데 기본적으로 시간이 부족했고 항상 2등급이었습니다.....
-
이창무t 문해전 1
업뎃 속도 왤케 느리죠 9평전에 미적2 완강은 하시려나 모르겠어요 기벡은...
-
몇일전에 등록하고왔는데 1년커리좀 알려주세요 ㅎㅎ
-
제목그대로 둘중 어떤강의가 더좋나요 그리고 문해전은 언제쯤 개강되나요?
-
이번에 수능 망쳐서 재수할려고 한석원이랑 이창무 프리패스 둘다샀는데 원래는 한석원쌤...
-
이과 독재생입니다 인강은 크포 문해전 드릴 어찌저찌하다보니 다 있는데요(다 안들음)...
-
지금 이창무쌤 현강 문제해결전략하고있나요??아니면 실전모의고사 이미 들어갔나요???...
점수계산도 해주세요!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
후덜ㅠㅡㅜㅠ 뭉과인데 컴퓨터 배우고 싶네용ㅎㅎㄹ
왜 정보통신계열은 교차지원이 가능한가 궁금했었는데, 직접 배워보니 여태까지 배운 내용들은 전부 수1 개념이면 충분하더라구요 ㅋㅋ
우왕.. 꿈은 문과 분야에서 확고한 편이라 다음에 취미로 꼭 배워보려고요ㅎㅎ 수학은 그나마 희망적이네요..ㅋㅋㅋ간-단한 응용 프로그램 정도 손댈 수 있으려면 꽤 많이 공부해야 하려나요ㅎㅎ
네 ㅋㅋ 보통사람들이 인식하는 '프로그램'이라는 걸 만들려면 꽤 많이 이해하고 공부하고 연습해야해요 ㅎㅎ
제가 컴퓨터에 관심많아서 중학생때 혼자 c언어책 사서 따라하고 그랬는데
지금 독학재수생이거든요
재수목표가 고사국, 한양대 소프트, 성균관대 소프트 이 쪽을 목표로 했는데
만약 안된다면 컴공쪽도 생각하는데
컴퓨터공학과 하구 소프트웨어학과랑 배우는 과목이나 방향자체가 많이 다른가요?
제가 특히 보안쪽에 관심이 많거든요!!
일단 울학교 컴공과 소프트를 비교하자면, 배우는 과목의 차이가 거의 없습니다.
다만, 소프트는 장학금을 받으면서 기숙사 배정이 학점 기준 없이 바로 배정이 가능하고, 컴공보다는 조금 더 빨리 배우며, 방학 때 삼성에 불려가서 프로젝트 하면서 무언가 더 배우는게 있다고 합니다.
졸업한 뒤에 현업으로 뛰어들었을 때, 초기에는 소프트가 컴공보다는 더 적응력이 클 거 같네요 ㅋㅋ
실례지만, 서울이신가요? 수원이신가요? 제가 지원한 곳이라..
수학교육과, 컴퓨터교육과를 제외한 모든 자연계열 과는 수원에 있습니다
이과생인데 무슨 소리인지 모르겠다.
발 닦고 잠이나 자야겠다..
주무세요 ㅋㅋㅋ
오랜만에보네 샵인클루드 스트디오어이취
ㅋㅋㅋ