컴공러가심심해서만든2048게임C코드
게시글 주소: https://dev.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 0
이거 추가결제하라고 뜨는데 맞는거임?
-
전체과목 내신 낮더라도 1 0
A가 b보다 전체 내신 낮아도 영어나 수학 높으면 공부머리 더 좋은거같아?
-
돈 많이 벌었으면 입결 너무 높아서 내 실력으로 못 들어감 럭키비키잖아?
-
2023년도부터 경찰대학교에서 '편입시험'이라는 제도를 운영하는데 해당 과목이...
-
화작런 해야하나요?? 5 0
재수생인데 구4어 높1 받고 싶습니다.. 현역 수능때도 국어(언매) 백분위 96으로...
-
엄마 판다는 새끼가 있네;; 3 1
-
고사국은 1 0
내 머리로는 입결이 높았던게 이해가 잘 안가는데 군대 7년복무 조항을 듣고도 그...
-
짱르비누나한테 댓글받기 6일차 5 0
ㅎㅎ
-
나 빨리 덮치고 싶은데 5 0
덮 언제 옮?
-
근데 참 학교라는게 대단해 1 0
수시 합격 이후 거의 3시~5시에 일어나던 내가 지금 지각 1번도 없이 생활패턴이 정상화되었어
-
항상 나라잃은 표정을해 2 0
항상 기분이 나쁘다
-
돈이 아주아주많아서 3 2
내집에만 잇어도 된다면 이런 피해 안 입어도 되겟지.. 다리개떨기, 욕 크게하는거...
-
확통 쌩노베에서 4까지 2 0
올리는거 많이 힘들까여... 지금 거의 중학교레벨임.. 영어도 노베부터 쌓는거라...
-
탐구 공부법 0 0
사문 정법하고있습니다 사문 불명 명불허전 다 들었고 정법 최적개념완성 들었는데요...
-
최저러 물1 생1 4 1
과탐필수라 어쩔수없고 3등급성적대만 나오면 되는데 이럼 물1이나 생1이나 거기서 거기인가요?
-
근데 또 지리 하려니까 고민되네요.. 그냥 스테이 할까요.. 작년에 김종익t 커리...
-
어드밴스드 사잇값정리 3 1
함수 f(x)가 [a, b] 연속이고 f(x)=0인 상수구간 존재하지 않을때 1....
-
독서 질문 4 0
특정 제재의 글이 잘 안 읽히고 머릿속에서 튕겨나가는 느낌이 드는데 이건 글을 많이...
-
설뱃 단 사람들 3 0
뭔가뭔가 눈나 같음 포용력있는 선배 같은 느낌?
-
귀염둥이는 내 글에 댓글 다삼 11 0
빨리.
-
예아 나는 멋진 대학생 4 0
가방엔 소주 한병
-
기하 확통이나 물화 원과목이나 투과목 모르면 못 풀어요?
-
고여가는 오전 4 0
반쯤 열어둔 미닫이문 틈으로 비릿하고 서늘한 흙내음이 건너온다. 다갈색 마루에...
-
언매 하시는 분들 4 0
개념공부 하는데 체언 수식 부사 라는게 나왔는데 이거랑 관형어랑 어떻게 구분하나요?ㅜ
-
아 1교시 수업인데... 7 1
아...
-
ㄱㅊ?
-
엘 프사이 콩그루 2 1
왜 다들 슈타게 명작이라 하는지 알겠음
-
재수생인데 6월에 킹누 보러감 1 0
하루로 떨어질 점수면 공부따윈 하지 않았다
-
으아아악 공부 왜케안되냐 2 0
하
-
왜 국어가 저능한지 깨달음 7 1
문학에서 선지의 이질감을 느끼는 능력이 부족함 단어 바꿔치기에 너무 잘 당함...
-
계속 뭐가 나와 답이없어 언제끝나
-
영어 뭐해야할까요 1 0
작년에는 월간 조정식 풀면서 감 유지만 하는 정도였습니다. 10모때까지...
-
인논 하는게 맞을까? 7 0
재수생이고 2월부터 기숙재수 하고있음 3년동안 예체능이였어서 고등학교 들와서 제대로...
-
국어 2등급 도와주세요 ㅜ 6 0
작수 2등급이었습니다 3개월쉬고 지금 공부시작 한 달동안 혼자 국어를 공부하고...
-
중앙대 평동캠퍼스다니면 3 0
무슨인식이에욪
-
손병호 게임 2 0
친구 없는 대학생 접어.
-
ㅈ반고 발표 지목 당함 2 1
내용 아무것도 모르는데 gpt로 임기웅변 성공!
-
문항공모 탈락~~~ 0 0
통사 출제기조(?)를 파악하지 못한 내 잘못이겠지만 얼마나 좋은 문항을 출제할...
-
대성패스 양도 1 0
30에 완전 양도합니다쪽지주세요!
-
오늘은 좀 피곤하네 4 2
쉬고싶다
-
수학 공부 방향? 0 0
미적입니다. 25 수능 때 4등급 나오고 재수 시작해서 6평 때 92점 (찍맞x)...
-
국민 60% “부자들 세금 너무 적다”…중산·저소득층은 “지금이 적절” 9 7
고소득층 세 부담 ‘낮다’ 56% 중산·저소득층은 ‘적절’ 비율 높아 우리나라 국민...
-
조퇴함 5 0
존나아프네ㅜㅜ
-
내마음 9 0
지금 지옥이에요 지옥!! 비오면 우울해
-
아니 ㅆㅂ 11 0
지하철에서 폰 꺼내다가 교통카드 바닥에 떨군 모양인데 사람들 개많아서 못...
-
큐브 지금 나만 오류뜸? 0 0
업뎃 하니까 비밀번호 아이디 다 맞는데 정보가 틀리다고 ㅈㄹ하는데 왜 그러지 지웠다...
-
춥다 1 0
근데 담요 두르면 잠옴 이럴땐어캄
-
안녕하세요 지방사는 현역 일반고 고3입니다 제가 1,2학년때 방황을 너무 많이해서...
-
통통이 미적런 -> 92점 6 0
미적런 하고 살면서 미적 처음 해봐서 김기현 파운데이션 사서 1단원만 들었었는데...
점수계산도 해주세요!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
후덜ㅠㅡㅜㅠ 뭉과인데 컴퓨터 배우고 싶네용ㅎㅎㄹ
왜 정보통신계열은 교차지원이 가능한가 궁금했었는데, 직접 배워보니 여태까지 배운 내용들은 전부 수1 개념이면 충분하더라구요 ㅋㅋ
우왕.. 꿈은 문과 분야에서 확고한 편이라 다음에 취미로 꼭 배워보려고요ㅎㅎ 수학은 그나마 희망적이네요..ㅋㅋㅋ간-단한 응용 프로그램 정도 손댈 수 있으려면 꽤 많이 공부해야 하려나요ㅎㅎ
네 ㅋㅋ 보통사람들이 인식하는 '프로그램'이라는 걸 만들려면 꽤 많이 이해하고 공부하고 연습해야해요 ㅎㅎ
제가 컴퓨터에 관심많아서 중학생때 혼자 c언어책 사서 따라하고 그랬는데
지금 독학재수생이거든요
재수목표가 고사국, 한양대 소프트, 성균관대 소프트 이 쪽을 목표로 했는데
만약 안된다면 컴공쪽도 생각하는데
컴퓨터공학과 하구 소프트웨어학과랑 배우는 과목이나 방향자체가 많이 다른가요?
제가 특히 보안쪽에 관심이 많거든요!!
일단 울학교 컴공과 소프트를 비교하자면, 배우는 과목의 차이가 거의 없습니다.
다만, 소프트는 장학금을 받으면서 기숙사 배정이 학점 기준 없이 바로 배정이 가능하고, 컴공보다는 조금 더 빨리 배우며, 방학 때 삼성에 불려가서 프로젝트 하면서 무언가 더 배우는게 있다고 합니다.
졸업한 뒤에 현업으로 뛰어들었을 때, 초기에는 소프트가 컴공보다는 더 적응력이 클 거 같네요 ㅋㅋ
실례지만, 서울이신가요? 수원이신가요? 제가 지원한 곳이라..
수학교육과, 컴퓨터교육과를 제외한 모든 자연계열 과는 수원에 있습니다
이과생인데 무슨 소리인지 모르겠다.
발 닦고 잠이나 자야겠다..
주무세요 ㅋㅋㅋ
오랜만에보네 샵인클루드 스트디오어이취
ㅋㅋㅋ