컴공러가심심해서만든2048게임C코드
#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를 선물하세요.
-
ㅅㅂ 43 20번 혈압 틀림?
-
츄릅 4
호식이 매간
-
공부 존나 잘하는데 잘생겨서 볼때마다 몸이 큥큥거림;;
-
수학 설맞이 s2 남은 거, 샤인미, 전국 서바 15, 16, 기원모 3개 ,...
-
맛잘알?
-
먼저 시간 재고 풀어본 다음 천천히 분석하고 오답하는게 좋나요? 걍 시간 안 재고...
-
9모 92점 (21,30틀, 28찍맞) 최저러라서 2등급만 뜨면 좋겠는데 미적 실력...
-
방금 병신짓 함 3
스카에서 아메리카노 뽑고 보지도 않고 평소처럼 맨 왼쪽에 있는 시럽을 존나...
-
2024 고3 10모 Crux Table (국어/수학) [N2410] 8
본 글의 작성자는 크럭스(Crux) 컨설팅 입시분석 팀장 환동입니다. 자료를...
-
국수영탐탐실모 +사문 10문제/한지 이마다 하나 듣기/단어암기 끝 설맞이 부시러감 ㅎㅎ
-
일단 9시반까지하공 지구하러가야디
-
킬캠 수준 0
시즌2 1회 72 2회 68 3회 76 찍맞없이 이렇게 나오는데 백분위로 치면 어느정도인가요..?
-
강대x 3,4 정도 난이도 실모 뭐가 있나요?
-
현재 3컷이고 안정3등급 목표고 화작인데 기출 작년 69수능 올해 69보고...
-
ㅅㅂ 42점 ㅅㅂ ㅅㅂㅅㅂ 지구 ㅈㄴ 파야겠네
-
아직 적응하지 않은 상황에 대한 상상의 자유와 현실적 맥락의 부재가 어떤 일이...
-
비틱질 같은게 아니라 진짜로 걱정되서 묻는건데 이명학 실모 이제 막 풀기 시작해서...
-
21-19 기출 푸는거 의미있을까요..
-
이런
-
언확쌍사 13211 국탐 컷이고 확통 높3이면 건동홍 되나요?
-
지금은 확통 하고 있고, 올해 수능도 확통 응시할 생각입니다. 수학 제외하고는 다...
-
어떤 회차가 좋을까요? 딱 4개만 추천해주세욤
-
오늘도 역시 수고하셨습니다. >국어 [본바탕 화작 18회] : 융합에서 (가)를...
-
나중에 꼭 키워야지
-
점수 등락폭이 너무커요 47 ~ 37까지 비유전 빠르게 처내면 47에서 44왔다갔다...
-
ㄱ선지 보면 정의로운 분배 '결과'로 생긴 불평등은 순수절차적정의론자인 롤스는...
-
궁금한
-
있잖아, 지금 2026 19패스 구매하고, 내 ID를 입력하면 너도, 나도 각각...
-
사문 어려운 개념 좀 보충할수있는컨텐츠 추천좀 해주세요 2
사문 어려운 개념 좀 보충할수있는컨텐츠 추천좀 해주세요 문제 형식이 어려윤어 말규욭
-
대학교 다니면서 재수하는게 너무 힘들고 오늘 심지어 아침 7시에 나가서 저녁 6시에...
-
수능 끝나면 바로 안 나오실까요??ㅠㅠ
-
현재 3등급 컷에 걸리는 정도로 나오는데요 이번년도 교육청 평가원 기출은 다...
-
수리논술.. 과학논술.. 미기확.. 물리... 경희대.. 의대....
-
제가 수학을 하다가 다른과목 때문에 소홀해져서 개념 상기시킬겸 실전개념도 배울 겸...
-
일주일 동안 이해원 3일치도 못풀었네 ㅋㅋ
-
안암이 아니어도 좋다 왕십리라도
-
성적은 오르더라도 지능은 점차 떨어지는듯 현역때 공부안해도 비상한 발상으로 수학킬러...
-
의대 증원 25,26학번 관련 문제 한 번에 해결하는 법 0
그냥 모든 증원 논의 없었던 일로 무르기
-
음... 88까지는 아니지 않나요...? 일단 저는 6평 88이고 각종 교육청...
-
다른 과목 충분해서 겨울방학동안 수학만 하루에 6~7시간할 생각인데 확통 선택이고...
-
하 씨 발
-
反간첩법 구속자 가족 “中서 구속된후 면회-통화 못해… 생사도 전해듣는 실정” 0
지난해 12월 중국에서 50대 한국인 남성 A씨가 반(反)간첩법 위반 혐의로 구속된...
-
위 사진이 문제고 아래 사진이 풀이인데 리미트를 저렇게 미분계수? 처럼 풀면...
-
연극에 주인공은 지위가 아닌데 고정 출연자 왜 지위인가요? 구별 방법좀 알려주새옷 ㅠ
-
2가 목표입니다 지금 3쯤인요같아요 실모를 아예 안 풀고 시험보기엔 그래서 조금만...
-
인생꿀빨고싶다 6
그랬더니 누가 인생 꿀빨려고 공부하는 거래. 아. 꿀은 좀 성실한가 좀 더 나태한 단물을 빨고 싶다
점수계산도 해주세요!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
방학때 만든거기도 하고 더 건들기가 귀찮음!
후덜ㅠㅡㅜㅠ 뭉과인데 컴퓨터 배우고 싶네용ㅎㅎㄹ
왜 정보통신계열은 교차지원이 가능한가 궁금했었는데, 직접 배워보니 여태까지 배운 내용들은 전부 수1 개념이면 충분하더라구요 ㅋㅋ
우왕.. 꿈은 문과 분야에서 확고한 편이라 다음에 취미로 꼭 배워보려고요ㅎㅎ 수학은 그나마 희망적이네요..ㅋㅋㅋ간-단한 응용 프로그램 정도 손댈 수 있으려면 꽤 많이 공부해야 하려나요ㅎㅎ
네 ㅋㅋ 보통사람들이 인식하는 '프로그램'이라는 걸 만들려면 꽤 많이 이해하고 공부하고 연습해야해요 ㅎㅎ
제가 컴퓨터에 관심많아서 중학생때 혼자 c언어책 사서 따라하고 그랬는데
지금 독학재수생이거든요
재수목표가 고사국, 한양대 소프트, 성균관대 소프트 이 쪽을 목표로 했는데
만약 안된다면 컴공쪽도 생각하는데
컴퓨터공학과 하구 소프트웨어학과랑 배우는 과목이나 방향자체가 많이 다른가요?
제가 특히 보안쪽에 관심이 많거든요!!
일단 울학교 컴공과 소프트를 비교하자면, 배우는 과목의 차이가 거의 없습니다.
다만, 소프트는 장학금을 받으면서 기숙사 배정이 학점 기준 없이 바로 배정이 가능하고, 컴공보다는 조금 더 빨리 배우며, 방학 때 삼성에 불려가서 프로젝트 하면서 무언가 더 배우는게 있다고 합니다.
졸업한 뒤에 현업으로 뛰어들었을 때, 초기에는 소프트가 컴공보다는 더 적응력이 클 거 같네요 ㅋㅋ
실례지만, 서울이신가요? 수원이신가요? 제가 지원한 곳이라..
수학교육과, 컴퓨터교육과를 제외한 모든 자연계열 과는 수원에 있습니다
이과생인데 무슨 소리인지 모르겠다.
발 닦고 잠이나 자야겠다..
주무세요 ㅋㅋㅋ
오랜만에보네 샵인클루드 스트디오어이취
ㅋㅋㅋ