1. 程式人生 > >c語言編寫的2048遊戲程式碼,大家可以參考一下這些

c語言編寫的2048遊戲程式碼,大家可以參考一下這些

2048_launcher.c
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
void main()
{
printf("正在啟動中,請稍後!\n");
Sleep(1000);
system("bin\\Version\\games\\0.1\\0.1.exe");
}
補充:0.1.c
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#define WIN 256 // 可以修改決定遊戲輸贏的值
// 矩陣陣列
int num[4][4]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int t[5]={0,0,0,0,0}; // 輔助陣列
int move=0;   // 記錄移動步數
int score=0;  // 記錄得分情況
int max=0;  // max表示遊戲輸贏,max=WIN時贏
int change=1;
// 產生一個隨機位置和隨機數
void Srand()
{
  int i,j;
  do// 產生一個隨機位置,如果產生的位置有資料,就繼續隨機生成一個新位置
  {
    i=((unsigned)rand())%4;
    j=((unsigned)rand())%4;
  }while(num[i][j]!=0);
  if(((unsigned)rand())%4==0)
  {   // 產生一個隨機數,如果該數對4取餘=0,則填充為4
    num[i][j]=4;
  }
  else
  {
    num[i][j]=2;
  }
  move++;
}
void Print()
{
  int j,i;
  system("CLS");
  printf("*~~~~~~~~2048~~~~~~~*\n");
  printf("*author:  亞威      *\n");
  printf("*得分: %d  步數: %d  \n",score,move);
  printf("*~~~~~~~~~~~~~~~~~~~*\n");
  for(i=0;i<=3;i++)
  {
    for(j=0;j<=3;j++)
    {
      if(num[i][j]==0)
        printf("*    ");
      else
        printf("*%4d",num[i][j]);
    }
    printf("*\n*~~~~~~~~~~~~~~~~~~~*\n");
  }
}
// 消除t陣列中前面和中間出現的0
void fun()
{
  int i,j;
  for(i=0;i<=3;i++)
  {
    if(t[i]==0)
    {
      for(j=i+1;j<=3;j++)
      {
        if(t[j]!=0)
        {
          change=1;
          break;
        }
      }
      t[i]=t[j];
      t[j]=0;
    }
    if(j>=3)
      break;
  }
}
// 合併操作
void hebing()
{
  int i;
  for(i=0;i<=2;i++)
  {
    if((t[i]!=0)&&(t[i]==t[i+1]))
    {
      t[i]*=2;
      score+=t[i];
      change=1;
      t[i+1]=0;
    }
    if(max<t[i])
      max=t[i];
  }
}
// 合併相鄰且相等的兩個數
void add()
{
  fun();  // 消除前面的和中間的0
  hebing();  // 合併相鄰且相等的兩個數
  fun();  // 再次消0
}
int main()
{
  int i,j;
  int gameover=1;
  // 產生一個隨機位置
  srand((unsigned)time(NULL));
  max=0;
  while(gameover&&(max<WIN))
  {
    
    if(change)
    {
      Srand();  // 產生一個隨機位置和隨機數
    }
    
    change=0;
    Print();  // 顯示介面
    char in=getch();  // 讀取操作命令
    switch(in)
    {
    case 'w':
    case 'W':
      for(i=0;i<=3;i++)
      {  // 依次處理第1至第4列
        for(j=0;j<=3;j++)
        {   // 把第i列的資料依次賦給輔助陣列t
          t[j]=num[j][i];
        }
        add();  // 核心:合併相鄰且相等的兩個數
        for(j=0;j<=3;j++)
        {   // 把處理後的資料依次放到矩陣對應位置
          num[j][i]=t[j];
        }
      }
      
      break;
    case 's':
    case 'S':
      for(i=0;i<=3;i++)
      {  // 依次處理第1至第4列
        for(j=0;j<=3;j++)
        {   // 把第i列的資料依次賦給輔助陣列t
          t[3-j]=num[j][i];
        }
        add();  // 核心:合併相鄰且相等的兩個數
        for(j=0;j<=3;j++)
        {   // 把處理後的資料依次放到矩陣對應位置
          num[j][i]=t[3-j];
        }
      }
      break;
    case 'a':
    case 'A':
      for(i=0;i<=3;i++)
      {  // 依次處理第1至第4列
        for(j=0;j<=3;j++)
        {   // 把第i列的資料依次賦給輔助陣列t
          t[j]=num[i][j];
        }
        add();  // 核心:合併相鄰且相等的兩個數
        for(j=0;j<=3;j++)
        {   // 把處理後的資料依次放到矩陣對應位置
          num[i][j]=t[j];
        }
      }
      break;
    case 'd':
    case 'D':
      for(i=0;i<=3;i++)
      {  // 依次處理第1至第4列
        for(j=0;j<=3;j++)
        {   // 把第i列的資料依次賦給輔助陣列t
          t[3-j]=num[i][j];
        }
        add();  // 核心:合併相鄰且相等的兩個數
        for(j=0;j<=3;j++)
        {   // 把處理後的資料依次放到矩陣對應位置
          num[i][j]=t[3-j];
        }
      }
      break;
    }
    gameover=0;
    for(i=0;i<=3;i++)
    {
      for(j=0;j<=3;j++)
      {
        if(num[i][j]==0)
          gameover=1;
      }
    }
    if((gameover==0)&&(change==0))
      break;
  }
  Print();
  if(max>=WIN)
  {
    printf("你贏了!\n");
    printf("你很牛啊!!!\n");
  }
  else
  {
    printf("遊戲結束!\n");
    printf("努力啊!!!\n");
  }
  getch();
  return 0;
}


相關推薦

c語言編寫2048遊戲程式碼大家可以參考一下這些

2048_launcher.c#include <stdio.h> #include <stdlib.h> #include <Windows.h> void main() { printf("正在啟動中,請稍後!\n"); Sleep(

聖誕節C語言編寫一段程式碼送給你的女神吧

本文只是寫給初學者,其中一些程式碼很隨意,望高手們不要見笑。 許多學習C語言的人,一段時間後,為了更進一步,開始學習C++,然而有關類的一些東西,搞的頭昏腦脹。其實類就是原始碼編好後封裝,別人使用時找到類的介面,類再利用API接下口。說白了,類就是一箇中介,不過編寫MFC類的人掌握了一些微軟

C語言編寫簡單遊戲——三子棋

      先簡單介紹一下三子棋的規則,方便我們接下來的程式設計和理解。規則如下:   在九宮格棋盤上,只要將自己的三個棋子走成一條線(橫、豎、對角線),對方就算輸了。   規則很簡單,但是我們應

C語言實現2048遊戲

文章目錄列印介面生成隨機數是否獲勝移動遊戲程式碼: 2048遊戲在很長一段時間內是一款很火的小遊戲。 遊戲要求: 最開始兩個隨機數 每次生成一個隨機數2或者4,生成4的概率是1/10 鍵盤上下左右鍵控制遊戲的走向 當出現2048數字時,玩家獲勝 列印介面

C語言超級搞笑的程式碼冷笑話我們程式設計師也會講的啊!

百年修得足下點選本文歡迎來到"C語言基礎"專題,今天我們放鬆一天,不學習知識,來看下大千世界的千奇百怪的C語言程式碼,你見過那些?1.關於隨機數這回事這個隨機數有點意思哦。2.真亦假,假亦真這是佛中的禪語嘛?3.你怕是貓迷麻煩把這隻貓抓出去!小編推薦一個學C語言/C++的學習

五子棋 (用C語言編寫五子棋遊戲

game.h 檔案 #ifndef __GAME_H__ #define __GAME_H__ enum OPTION { EXIT, PLAY }; #include <stdio.h> #include <stdlib.h> #incl

自我記錄:C語言編寫程式碼可能發生的問題與注意事項【陸續補充】

前言:該文章原創,不僅針對新手還是老手,均有一定幫助。若有錯誤地方,請不惜賜教。主要結合《C與指標》這本書,後續看過《C專家程式設計》、《C語言的XXX個問題》等書後會繼續補充。【非計算機類學生,目前更新進度緩慢】 編寫程式碼前的注意: ①、程式設計風格影響程式碼的可讀性,這像是一個人的臉,

c語言 編寫一個程式輸入a b c三個值輸出其中最大者

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C語言編寫貪吃蛇小遊戲

**遊戲結構**       1.知道怎麼控制終端上游標的位置。 #include<stdio.h> #inc

C語言程式設計小遊戲——貪吃蛇覺得不錯請關注點贊加轉發!

C/C++企業實戰級課程資源(素材+原始碼+視訊)、編譯大禮包免費分享,需要的加學習群892643663。 #define N 200 #include <graphics.h> #include <stdlib.h> #include <dos.h>

輸入一行字元分別統計出其中英文字母、空格、數字和其他字元的個數。(用c++語言編寫程式)【寫的第1篇部落格很高興

#include<stdio.h> int main() { char ch; //定義ch為字元型變數 int a=0,b=0,c=0,d=0; //定義a,b,c,d為整型變數並賦初值 while(scanf("%c",&ch),ch!=’\n’) //輸入字元直到c

C語言編寫猜數小遊戲

#include <stdio.h> #include <stdlib.h> void myrand(int a[])//隨機數產生函式 { int i = 0; srand(time(NULL)); for (i = 0; i < 2; ++i)

C語言實現掃雷遊戲要求第一次不踩雷能展開一片雷區(望各位大佬斧正)

對於實現掃雷遊戲思路如下: 首先佈置一定大小的掃雷區如9*9 隨機(rand())佈置一定數量的雷 實現掃雷(其中要求第一次踩不到雷,能展開一片無雷區) 其具體操作如下: 建立game.h, game.c, test.c檔案以便整理 在test.c檔案中:

C語言編寫的坦克大戰exe小遊戲

C語言編寫的坦克大戰exe小遊戲! (含有部分C++函式,不過不需要知道實現細節,主要用於鍵盤讀取等) 適合初學者學習的坦克大戰程式碼,無圖片,遊戲全部功能畫面顯示全部由 printf 列印的哦! C++視訊跟筆記都是全網最新最全的,加群玖四捌,玖伍四,四捌四 C語言/C艹程式設計入

【新手入門】SDL+C語言編寫俄羅斯方塊小遊戲小經歷

基礎太差,現在重新學習了一遍C語言。因為訓練要求,要學習SDL庫的使用,編寫個SDL+俄羅斯方塊小遊戲。轉眼一週多,小白終於寫出來了。以下是一些體會。感覺還是好好學習,多擼程式碼才是正道。 一、遊戲規則 1.開啟遊戲,遊戲開始,方塊自由下落。 2.當按下左鍵,方塊對環境進行判斷,條件應許即進行

二叉排序樹(新建插入查詢刪除)(C語言編寫

#include<stdio.h> #include <stdlib.h> typedef struct BSTNode{         int data;         struct BSTNode *lchild,*rchild; }BSTN

c語言編寫兩個數的交換三種方法

下面是從函式角度,還有簡單的交換 法去實現兩個數的交換。其中函式用到指標,通過前兩種方法可以深刻的體會到指標變得的含義。 #include <stdio.h> void swap(int *a,int *b) {   int temp;     temp=*a;

一個好玩的小遊戲(純C語言編寫)

最近在看知乎是發現了一個這一個專欄 https://zhuanlan.zhihu.com/c2game 從中獲取的許多知識,本文中的遊戲也是從裡面學到的,不過本人又自己加了一些功能。 這是一個類似於飛機大戰的遊戲,不過目前程式碼量比較小,所以看起來非常簡陋

使用C語言編寫程式求任意兩個整數的較大值

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define max(a,b)((a>b?a:b)) int main() {

01揹包的四種解法詳解:動態規劃貪心法回溯法優先佇列式分支限界法(C語言編寫

最近剛完成了演算法課程設計,題目是用多種解法解決01揹包問題,經過一番探索,終於成功的用四種方法完成了本次實驗,下面記錄分享一下成果: 首先解釋下什麼是01揹包問題:給定一組共n個物品,每種物品都有自己的重量wi, i=1~n和價值vi, i=1~n,在限定的總重量(揹包的