C 언어 코드 2048 게임 실현

7255 단어 C 언어2048
저 는 대학교 1 학년 신입생 입 니 다.겨울방학 실습 시간 에 선생님 께 서 c 언어 로 그룹 을 나 누 어 작은 게임 을 만 들 라 고 하 셨 습 니 다.우리 팀 은'2048'을 선 택 했 습 니 다.우리 팀 에 큰 신 이 있 기 때문에 우 리 는 대부분의 일 을 큰 신 에 게 맡 겼 다.그러나 실습 을 마 친 후에 나 는 아무것도 배우 지 못 했다 는 것 을 느 꼈 다.자신 이 c 언어 에 대한 이해 도 책 에 국한 되 었 다.그 큰 신 들 이 스스로 작은 게임 을 만 들 수 있 었 다 는 것 을 생각 하 니 마음 이 매우 급 했다.그래서 이 겨울방학 을 이용 하여 저 는'2048'작은 게임 의 프로 그래 밍 을 독립 적 으로 완 성 했 습 니 다.
게임 코드 는 저 는 Xcode 로 만 들 었 습 니 다.저 는 IOS 소 백 입 니 다.일부 헤더 파일 은 Xcode 에서 사용 할 수 없고 대체 할 수 있 는 것 을 찾 을 수 없 기 때문에 일부 기능 은 스크린 기능 과 데 이 터 를 저장 하 는 기능,그리고 음악 기능 을 실현 할 수 없습니다.뿐만 아니 라 숫자 가 일치 하지 않 는 문제 도 존재 합 니 다.큰 신 이 저 를 지도 해 주 셨 으 면 좋 겠 습 니 다.대단히 감사합니다!

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<curses.h>
/*   */
int i,j,a[4][4]={};/*    a[4][4]  0*/
void kaishi()/*      */
{
  printf("Welcome to 2048
"); printf(" 1).
"); printf(" 2).
"); } int defen(int a[][4])/* */ { int max=a[0][0]; int static sum=0; for(i=0;i<4;i++) for(j=0;j<4;j++) if(a[i][j]>max) max=a[i][j]; sum+=max; return sum;/* */ } void jiemian(int a[][4]) { int b[2]={2,4},c[4]={0,1,2,3},sum,n,m; do { srand((int)time(NULL));/* */ m=c[rand()%4]; n=c[rand()%4]; /* */ if(a[m][n]==0)/* */ { a[m][n]=b[rand()%2];/* 2 4*/ break;/* */ } }while(1); printf("%d %d %d
",m,n,a[m][n]); for(i=0;i<4;i++) { printf("-------------------------
"); for(j=0;j<4;j++) { if((m==i)&&(n==j)) printf("| %d ",a[m][n]);/* 2 4*/ else { if(a[i][j]>0) printf("| %d ",a[i][j]);/* a[i][j] , */ else printf("| ");/* a[i][j] */ } } printf("|
"); } printf("-------------------------
"); printf(" :%d
",sum=defen(a)); } void hebingup(int a[][4])/* */ { int m; for(j=0;j<4;j++) for(i=0;i<3;i++) if(a[i][j]>0)/* a[i][j] 0 , */ if(a[i][j]==a[i+1][j]&&a[i][j]!=0)/* */ { a[i][j]=2*a[i][j];/* */ if(i==2) a[i+1][j]=0; else for(m=i+1;m<3;m++) { a[m][j]=a[m+1][j]; a[m+1][j]=0; } /* , */ } } void hebingdown(int a[][4])/* */ { int m; for(j=0;j<4;j++) for(i=3;i>0;i--) if(a[i][j]>0) if(a[i][j]==a[i-1][j]) { a[i][j]=2*a[i][j]; if(i==1) a[i-1][j]=0; else for(m=i-1;m>0;m--) { a[m][j]=a[m-1][j]; a[m-1][j]=0; } } } void hebingleft(int a[][4])/* */ { int m; for(i=0;i<4;i++) for(j=0;j<3;j++) if(a[i][j]>0) if(a[i][j]==a[i][j+1]) { a[i][j]=2*a[i][j]; if(j==2) a[i][j+1]=0; else for(m=j+1;m<3;m++) { a[i][m]=a[i][m+1]; a[i][m+1]=0; } } } void hebingright(int a[][4])/* */ { int m; for(i=0;i<4;i++) for(j=3;j>0;j--) if(a[i][j]>0) if(a[i][j]==a[i][j-1]) { a[i][j]=2*a[i][j]; if(j==1) a[i][j-1]=0; else for(m=j-1;m>0;m--) { a[i][m]=a[i][m-1]; a[i][m-1]=0; } } } void yidong(char b) { int x,m; switch(b) { case 'w' : for(j=0;j<4;j++) for(i=1;i<=3;i++) for(x=i,m=i;x>0;x--,m--)/*x ,m i */ { if(a[m-1][j]>0) break;/* 0, */ else { a[m-1][j]=a[m][j]; a[m][j]=0; } } hebingup(a); break; case 's' : for(j=0;j<4;j++) for(i=2;i>=0;i--) for(x=3-i,m=i;x>0;x--,m++) { if(a[m+1][j]>0) break; else { a[m+1][j]=a[m][j]; a[m][j]=0; } } hebingdown(a); break; case 'a' : for(i=0;i<4;i++) for(j=1;j<=3;j++) for(x=j,m=j;x>0;x--,m--) { if(a[i][m-1]>0) break; else { a[i][m-1]=a[i][m]; a[i][m]=0; } } hebingleft(a); break; case 'd' : for(i=0;i<4;i++) for(j=2;j>=0;j--) for(x=3-j,m=j;x>0;x--,m++) { if(a[i][m+1]>0) break; else { a[i][m+1]=a[i][m]; a[i][m]=0; } } hebingright(a); break; } } int main(int argc,char *argv[]) { int flag=1; char c,k; system("stty -icanon"); outloop:; kaishi(); k=getchar(); printf("
"); if(k=='1') { while(flag==1) { jiemian(a); c=getchar(); printf("
"); yidong(c); for(i=0;i<4;i++) for(j=0;j<4;j++) { if(a[i][j]==0) { flag=1; goto end;/* , , */ } else flag=0; } end:; } } if(k=='2') { do { printf(" : <w>,<s>,<a>,<d> , , , , 。
"); printf(" 3).
"); k=getchar(); }while(k!=3); goto outloop;/* */ } printf("
"); return 0; }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기