c語言設計遊戲代碼,c語言2048遊戲代碼

本文目錄一覽:

怎樣用C語言編寫一個小遊戲?

「貪吃蛇」C代碼:

#include stdio.h

#include stdlib.h

#include conio.h

#include time.h

#include Windows.h

#define W 78  //遊戲框的寬,x軸

#define H 26  //遊戲框的高,y軸

int dir=3;    //方向變數,初值3表示向「左」

int Flag=0;   //吃了食物的標誌(1是0否)

int score=0;  //玩家得分

struct food{ int x;  //食物的x坐標

                  int y;  //食物的y坐標

                 }fod;  //結構體fod有2個成員

struct snake{ int len;  //身長

                   int speed;  //速度

                   int x[100];

                   int y[100];

                  }snk;  //結構體snk有4個成員

void gtxy( int x,int y)  //控制游標移動的函數

{ COORD coord;

coord.X=x;

coord.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

void gtxy( int x,int y);  //以下聲明要用到的幾個自編函數

void csh( );  //初始化界面

void keymove( ); //按鍵操作移動蛇

void putFod( );  //投放食物

int  Over( );   //遊戲結束(1是0否)

void setColor(unsigned short p, unsigned short q); //設定顯示顏色

int main( )   //主函數

{ csh( );

  while(1)

    { Sleep(snk.speed);

      keymove( );

      putFod( );

      if(Over( ))

       {system(「cls」);

        gtxy(W/2+1,H/2); printf(「遊戲結束!T__T」);

        gtxy(W/2+1,H/2+2); printf(「玩家總分:%d分」,score);

        getch( );

        break;

       }

   }

   return 0;

}

void csh( )  //初始化界面

{ int i;

gtxy(0,0);

CONSOLE_CURSOR_INFO cursor_info={1,0};  //以下兩行是隱藏游標的設置

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),cursor_info);

for(i=0;i=W;i=i+2)  //橫坐標要為偶數,因為這個要列印的字元佔2個位置

{ setColor(2, 0);  //設定列印顏色為綠字黑底

  gtxy(i,0);  printf(“■”);  //列印上邊框

  gtxy(i,H); printf(“■”);  //列印下邊框

}

for(i=1;iH;i++)

{ gtxy(0,i); printf(“■”);  //列印左邊框

   gtxy(W,i); printf(“■”);  //列印右邊框

}

while(1)

  { srand((unsigned)time(NULL));  //初始化隨機數發生器srand( )

  fod.x=rand()%(W-4)+2;  //隨機函數rand( )產生一個從0到比」(W-4)」小1的數再加2

  fod.y=rand()%(H-2)+1;  //隨機函數rand( )產生一個從0到比」(H-2)」小1的數再加1

  if (fod.x%2==0) break;  //fod.x是食物的橫坐標,要是2的倍數(為偶數)

}

setColor(12, 0);  //設定列印顏色為淡紅字黑底

gtxy(fod.x,fod.y); printf(“●”);  //到食物坐標處列印初試食物

snk.len=3;      //蛇身長

snk.speed=350;  //刷新蛇的時間,即是移動速度

snk.x[0]=W/2+1;  //蛇頭橫坐標要為偶數(因為W/2=39)

snk.y[0]=H/2;    //蛇頭縱坐標

setColor(9, 0);  //設定列印顏色為淡藍字黑底

gtxy(snk.x[0], snk.y[0]);  printf(“■”);  //列印蛇頭

for(i=1;isnk.len;i++)

    { snk.x[i]=snk.x[i-1]+2;  snk.y[i]=snk.y[i-1];

      gtxy(snk.x[i],snk.y[i]);  printf(“■”);  //列印蛇身

   }

setColor(7, 0);  //恢復默認的白字黑底

return;

}

void keymove( )  //按鍵操作移動蛇

{ int key;

if( kbhit( ) )    //如有按鍵輸入才執行下面操作

   { key=getch( );

     if (key==224)  //值為224表示按下了方向鍵,下面要再次獲取鍵值

       { key=getch( );

         if(key==72dir!=2)dir=1;  //72表示按下了向上方向鍵

         if(key==80dir!=1)dir=2;  //80為向下

         if(key==75dir!=4)dir=3;  //75為向左

         if(key==77dir!=3)dir=4;  //77為向右

       }

   if (key==32)

      { while(1) if((key=getch( ))==32) break; }  //32為空格鍵,這兒用來暫停

  }

if (Flag==0)  //如沒吃食物,才執行下面操作擦掉蛇尾

  { gtxy(snk.x[snk.len-1],snk.y[snk.len-1]);  printf(”  “); }

int i;

for (i = snk.len – 1; i 0; i–)  //從蛇尾起每節存儲前一節坐標值(蛇頭除外)

{ snk.x[i]=snk.x[i-1];  snk.y[i]=snk.y[i-1]; }

switch (dir)  //判斷蛇頭該往哪個方向移動,並獲取最新坐標值

{ case 1: snk.y[0]–; break;   //dir=1要向上移動

  case 2: snk.y[0]++; break;  //dir=2要向下移動

  case 3: snk.x[0]-=2; break;  //dir=3要向左移動

  case 4: snk.x[0]+=2; break;  //dir=4要向右移動

}

setColor(9, 0);

gtxy(snk.x[0], snk.y[0]); printf(“■”);  //列印蛇頭

if (snk.x[0] == fod.x snk.y[0] == fod.y)  //如吃到食物則執行以下操作

   { printf(“\007”); snk.len++; score += 100; snk.speed -= 5; Flag = 1; } //007是響鈴

else Flag = 0;   //沒吃到食物Flag的值為0

if(snk.speed150) snk.speed= snk.speed+5;  //作弊碼,不讓速度無限加快

}

void putFod( )  //投放食物

{ if (Flag == 1)  //如吃到食物才執行以下操作,生成另一個食物

   { while (1)

  { int i,n= 1;

   srand((unsigned)time(NULL));  //初始化隨機數發生器srand( )

   fod.x = rand( ) % (W – 4) + 2;  //產生在遊戲框範圍內的一個x坐標值

   fod.y = rand( ) % (H – 2) + 1;  //產生在遊戲框範圍內的一個y坐標值

   for (i = 0; i snk.len; i++)   //隨機生成的食物不能在蛇的身體上

 { if (fod.x == snk.x[i] fod.y == snk.y[i]) { n= 0; break;} }

   if (n fod.x % 2 == 0) break;  //n不為0且橫坐標為偶數,則食物坐標取值成功

  }

 setColor(12, 0);

      gtxy(fod.x, fod.y);  printf(“●”);   //游標到取得的坐標處列印食物

   }

return;

}

int Over( )  //判斷遊戲是否結束的函數

{ int  i;

setColor(7, 0);

gtxy(2,H+1); printf(「暫停鍵:space.」);  //以下列印一些其它信息

gtxy(2,H+2); printf(「遊戲得分:%d」,score);

if (snk.x[0] == 0 || snk.x[0] == W) return 1;  //蛇頭觸碰左右邊界

if (snk.y[0] == 0 || snk.y[0] == H) return 1;  //蛇頭觸碰上下邊界

for (i = 1; i snk.len; i++)

{ if (snk.x[0] == snk.x[i] snk.y[0] == snk.y[i]) return 1; }  //蛇頭觸碰自身

return 0;   //沒碰到邊界及自身時就返回0

}

void setColor(unsigned short ForeColor = 7, unsigned short BackGroundColor = 0)

{  HANDLE  handle = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute( handle, ForeColor + BackGroundColor * 0x10 );

}   //用來設定顏色的函數

C語言簡易文字冒險遊戲源代碼

記憶遊戲

#includestdio.h

#includetime.h

#includestdlib.h

#includewindows.h

#define N 10

int main(  )

{int i,k,n,a[N],b[N],f=0;

srand(time(NULL));

printf(”  按1開始\n  按0退出:_”);

scanf(“%d”,n);

system(“cls”);

while(n!=0)

{for(k=0;kN;k++)a[k] = rand( )%N;

printf(“\n\t\t[請您牢記看到顏色的順序]\n\n”);

for(k=0;kN;k++)

{switch(a[k])

{case 0:system(“color 90″);printf(”  0:淡藍色\n”);break;  //淡藍色

case 1:system(“color f0″);printf(”  1:白色\n”);break;  //白色

case 2:system(“color c0″);printf(”  2:淡紅色\n”);break;  //淡紅色

case 3: system(“color d0″);printf(”  3:淡紫色\n”);break;  //淡紫色

case 4: system(“color 80″);printf(”  4:灰色\n”); break;  //灰色

case 5: system(“color e0″);printf(”  5:黃色\n”);break;  //黃色

case 6: system(“color 10″);printf(”  6:藍色\n”); break;  //藍色

case 7: system(“color 20″);printf(”  7:綠色\n”);break;  //綠色

case 8: system(“color 30″);printf(”  8:淺綠色\n”);break;  //淺綠色

case 9: system(“color 40″);printf(”  9:紅色\n”);break;  //紅色

}

Sleep(1500);

system(“color f”);  //單個控制 文字顏色

Sleep(100);

}

system(“cls”);

printf(” 0:淡藍色,1:白色,2:淡紅色,3:淡紫色,4:灰色,5:黃色,6:藍色7:綠色,8:淺綠色,9:紅色\n”);

printf(“\n\t請輸入顏色的順序:”);

for(k=0;kN;k++)scanf(“%d”,b[k]);

for(k=0;kN;k++)if(a[k] == b[k]) f++;

if(f==0) printf(”  你的記憶弱爆了0\n”);

else if(f==1) printf(”  你的記憶有點弱1\n”);

else if(f5) printf(”  你的記憶一般5\n”);

else printf(”  你的記憶力很強!\n”);

Sleep(2000);

system(“cls”);

printf(“\t\t按0退出\n\t\t按任意鍵繼續遊戲:\n”);

scanf(“%d”,n);

system(“cls”);

}

return 0;

}

註:DEVc++運行通過,每輸入一個數字要加入一個空格。

用C語言編寫的小遊戲代碼是什麼?

「猜數字小遊戲」,每個數字後按空格,最後按回車確認

#includestdio.h

#includestdlib.h

#includetime.h

int a[4],b[4];

int count=0;  //計算猜測次數

void csh( );  //初始化

void start( );  //開始遊戲

int main( )

{ csh( );

start( );

}

void csh( )  //初始化

{ printf(“\n\n         猜  數  字  小  游  戲\n\n”);

printf(「    猜四個數字,如數字與順序都正確記為A,數字正確位置不對記為B.\n」);

}

void start( )  //開始遊戲

{int m,n;  //m是完全猜對的個數,n是順序不對的個數

while(1)

{srand((unsigned)time(NULL));  //初始化隨機數發生器srand( )

while(1) { for(int i=0;i4;i++) a[i]=rand( )%10;  //rand( )函數每次隨機產生一個0-9的數

if( (a[3]!=a[2]a[3]!=a[1]a[3]!=a[0])

(a[2]!=a[1]a[2]!=a[0])a[1]!=a[0] ) break; }  //4個隨機數各自不相等

printf(”    請依次輸入4個一位整數:\n\n   “);

while(1)

{for(int i=0;i4;i++) scanf(「%d」,b[i]);

printf(”    你輸入的是:%d  %d  %d  %d “,b[0],b[1],b[2],b[3]);

m=0;n=0;

for(int i=0;i4;i++)

{for(int j=0;j4;j++)

{ if(b[i]==a[j]i==j)m=m+1; if(b[i]==a[j]i!=j)n=n+1; }

}

count=count+1;

printf(”      %dA  %dB   你試了%d次\n   “,m,n,count);

if(m==4)break;

if(count==8){ count=0; break; }

}

printf(“\n”);

if(m==4)printf(”     你猜對了(^-^)! 就是:%d %d %d %d\n”,a[0],a[1],a[2],a[3]);

else printf(”     你輸了(T-T)!哈哈!應該是:%d %d %d %d\n”,a[0],a[1],a[2],a[3]);

int z;

printf(”     (要繼續嗎?1或0)\n   “);

scanf(「%d」,z);

if(z==0) break;

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/231753.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 01:07
下一篇 2024-12-11 01:07

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • 為什麼不用Python開發遊戲

    Python是一種高級編程語言,擁有簡單易學、代碼簡潔等優點。同時,Python也是一種多用途的語言,可以用於Web開發、數據分析以及機器學習等領域。然而,對於遊戲開發領域,Pyt…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29

發表回復

登錄後才能評論