當前位置:首頁 » 編程語言 » 游戲改造裝備c語言編程思路
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

游戲改造裝備c語言編程思路

發布時間: 2022-11-06 15:07:47

『壹』 c語言怎麼編游戲

誰說單靠c語言編不出遊戲的,自己學的不精就別裝,樓主,c語言是可以編游戲的,但c語言本身也有自己的缺點,就是不是面向對象語言,這樣會導致代碼很煩瑣,所以現在編寫游戲都用c++,java等語言。如果你想寫一些比如五子棋之類的簡單游戲,可以看《windows
程序設計》結合裡面的圖形函數來寫

『貳』 求懂得C語言等編程知識的高段專家學者告訴我,游戲物品爆率和強化的原理。(冒險島)

滿意回答內個人推測的還行。

游戲不一定是c語言做的,游戲需要一個團隊以及各種語言和技術製作出來。

不同的游戲用的方法也多樣。

概率這個問題,計算機是不能實現隨機這一功能的,都是有固定的公式。

如果想要每次出的結果都不一樣,通常只要在公式里帶入時間就好了,時間一直在變,最後的結果也會一直變。當然以其它為參照也可以。

知道強化為什麼要讀條么?因為如果你在1秒內同時強化N次,出來的概率都是一樣的,

只有讓時間變了,下次的結果也會變。類似於這樣情況。這也不是全部,這是大概解釋。

『叄』 教你如何使用C語言編寫簡單小游戲

編寫程序,實現如下表所示的5-魔方陣。
17

24

1

8

15

23

5

7

14

16

4

6

13

20

22

10

12

19

21

3

11

18

25

2

9

5-魔方陣
問題分析
所謂「n-魔方陣」,指的是使用1〜n2共n2個自然數排列成一個n×n的方陣,其中n為奇數;該方陣的每行、每列及對角線元素之和都相等,並為一個只與n有關的常數,該常數為n×(n2+1)/2。
例如5-魔方陣,其第一行、第一列及主對角線上各元素之和如下:
第一行元素之和:17+24+1+8+15=65
第一列元素之和:17+23+4+10+11=65
主對角線上元素之和:17+5+13+21+9=65

n×(n2+1)/2=5×(52+1)/2=65
可以驗證,5-魔方陣中其餘各行、各列及副對角線上的元素之和也都為65。
假定陣列的行列下標都從0開始,則魔方陣的生成方法為:在第0行中間置1,對從2開始的其餘n2-1個數依次按下列規則存放:
(1)
假定當前數的下標為(i,j),則下一個數的放置位置為當前位置的右上方,即下標為(i-1,j+1)的位置。
(2)
如果當前數在第0行,即i-1小於0,則將下一個數放在最後一行的下一列上,即下標為(n-1,j+1)的位置。
(3)
如果當前數在最後一列上,即j+1大於n-1,則將下一個數放在上一行的第一列上,即下標為(i-1,0)的位置。
(4)
如果當前數是n的倍數,則將下一個數直接放在當前位置的正下方,即下標為(i+1,j)的位置。
演算法設計
在設計演算法時釆用了下面一些方法:
定義array()函數,array()函數的根據輸入的n值,生成並顯示一個魔方陣,當發現n不是奇數時,就加1使之成為奇數。
使用動態內存分配與釋放函數malloc()與free(),在程序執行過程中動態分配與釋放內存,這樣做的好處是使代碼具有通用性,同時提高內存的使用率。
在分配內存時還要注意,由於一個整型數要佔用兩個內存,因此,如果魔方陣中要存放的數有max個,則分配內存時要分配2*max個單元,從而有malloc(max+max)。在malloc()函數中使用max+max而不是2*max是考慮了程序運行的性能。
顯然應該使用二維數組來表示魔方陣,但雖然數組是二維形式的,而由於內存是一維線性的,因此在存取數組元素時,要將雙下標轉換為單個索引編號。在程序中直接定義了指針變數來指向數組空間,即使用malloc()函數分配的內存。

『肆』 C語言編程中寫程序的思路和方法

我的經驗是隨時把握「一分為二」的編程思路,就是任何一個問題把她分解成子問題,然後在把子問題在向下分解直到可以用「演算法」實現,套用結構化程序設計的說法就是逐步求精的過程。

『伍』 C語言程序設計思路

代碼只是實現了逆序輸出,而沒有把sentence中的內容逆序,每逆序輸出一個單詞,都用結束符來替換。

#include "stdio.h"
#include "string.h"
void InverseByWord(char *sentence)
{
int n,i,j;
n=strlen(sentence);// 計算字元串長度。

for(i=n-1;i>-1;i--)// 從最後一個元素開始循環,直到第一個元素

{
if(*(sentence+i)=='\0')//如果是結束符的話,仍然設置為結束符。由於字元串長度不變,所以結束符位置不變。
{
printf("%c",*(sentence+i));// 輸出結束符

*(sentence+i)='\0';//設置結束符
}
if(*(sentence+i)==' ')// 如果是空格的話,說明新的單詞開始。

{
n=strlen(sentence);// 計算字元串長度

for(j=i+1;j<n;j++)// 從i+1開始輸出新的單詞

{
printf("%c",*(sentence+j));
*(sentence+j)='\0';// 輸出後清除字元。

}}}
printf("%s\n",sentence);//輸出字元串
}
void main()
{
char pStr[100]="This is an interesting programe";
InverseByWord(pStr);
}

『陸』 如何使用C語言編寫簡單小游戲

C語言是計算機專業都要學習的一門基礎學科。一般來說,是比較枯燥的.那麼,我們能不能通過編一些小游戲來提高它的趣味性呢?這樣學習程序設計,就不會是一件艱苦 ,枯燥的事,它變得象電腦游戲一樣充滿好奇,富有樂趣。

例如2048這款游戲:

方法/步驟:

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<conio.h>

#include<windows.h>

#define SIZE 4

static int score=0;

void putn(int n[][SIZE]);

void getn(int n[][SIZE]);

int isempty(int n[][SIZE]);

int isfull(int n[][SIZE]);

void math(int n[][SIZE],char c);

void tow(int n[][SIZE]);

void toa(int n[][SIZE]);

void tos(int n[][SIZE]);

void tod(int n[][SIZE]);

  • //主函數

    int main()

    {

    int i,j;

    int n[SIZE][SIZE];

    char c=' ';

    for(i=0;i<SIZE;i++)

    {

    for(j=0;j<SIZE;j++)

    {

    n[i][j]=0;

    }

    }

    printf( "*********************** "

    " 2048(%dX%d) "

    " control:W/A/S/D "

    "press any key to begin "

    "*********************** ",SIZE,SIZE);

    getch();

    system("cls");

    //n[0][1]=2048;

    //n[0][3]=2048;

    while(1)

    {

    if(isempty(n))

    getn(n);

    putn(n);

    if(!isempty(n)&&isfull(n))

    break;

    sleep(200);

    c=getch();

    while(c!='w'&&c!='a'&&c!='s'&&c!='d')

    c=getch();

    math(n,c);

    system("cls");

    }

    printf(" Game Over! ",score);

    return 0;

    }

  • //函數

    void putn(int n[][SIZE])

    {

    int i,j;

    for(i=0;i<SIZE;i++)

    {

    for(j=0;j<SIZE;j++)

    printf("| ");

    printf("| ");

    for(j=0;j<SIZE;j++)

    {

    if(n[i][j]==0)

    printf("| ");

    else

    printf("|%4d ",n[i][j]);

    }

    printf("| ");

    for(j=0;j<SIZE;j++)

    printf("|_____");

    printf("| ");

    }

    printf("score: %d",score);

    }

    void getn(int n[][SIZE])

    {

    int a,b;

    a=rand()%SIZE;

    b=rand()%SIZE;

    while(n[a][b]!=0)

    {

    a=rand()%SIZE;

    b=rand()%SIZE;

    }

    n[a][b]=2;

    }

    int isempty(int n[][SIZE])

    {

    int i,j,count=0;

    for(i=0;i<SIZE;i++)

    for(j=0;j<SIZE;j++)

    if(n[i][j]==0)

    count++;

    return count;

    }

    int isfull(int n[][SIZE])

    {

    int i,j,count=0;

    for(i=0;i<SIZE;i++)

    {

    for(j=1;j<SIZE-1;j++)

    {

    if(n[i][j]==n[i][j+1]||n[i][j]==n[i][j-1])

    count++;

    }

    }

    for(j=0;j<SIZE;j++)

    {

    for(i=1;i<SIZE-1;i++)

    {

    if(n[i][j]==n[i+1][j]||n[i][j]==n[i-1][j])

    count++;

    }

    }

    return count>0?0:1;

    }

    void math(int n[][SIZE],char c)

    {

    switch(c)

    {

    case 'w':tow(n);break;

    case 'a':toa(n);break;

    case 's':tos(n);break;

    case 'd':tod(n);break;

    default :;

    }

    }

    void tow(int n[][SIZE])

    {

    int i,j,a;

    int m[SIZE];

    for(a=0;a<SIZE;a++)

    m[a]=0;

    for(j=0;j<SIZE;j++)

    {

    for(a=0;a<SIZE;a++)

    {

    for(i=0;i<SIZE-1;i++)

    {

    if(n[i][j]==0)

    {

    n[i][j]=n[i+1][j];

    n[i+1][j]=0;

    }

    }

    }

    }

    for(j=0;j<SIZE;j++)

    {

    for(a=0,i=0;i<SIZE;i++)

    {

    if(n[i][j]!=n[i+1][j]&&n[i][j]!=0||n[i][j]==2048)

    {

    m[a++]=n[i][j];

    n[i][j]=0;

    }

    else if(n[i][j]==n[i+1][j])

    {

    m[a++]=n[i][j]+n[i+1][j];

    score+=m[a-1];

    n[i][j]=0,n[i+1][j]=0;

    }

    }

    for(i=0;i<SIZE;i++)

    {

    n[i][j]=m[i];

    m[i]=0;

    }

    }

    }

    void toa(int n[][SIZE])

    {

    int i,j,a;

    int m[SIZE];

    for(a=0;a<SIZE;a++)

    m[a]=0;

    for(i=0;i<SIZE;i++)

    {

    for(a=0;a<SIZE;a++)

    {

    for(j=0;j<SIZE-1;j++)

    {

    if(n[i][j]==0)

    {

    n[i][j]=n[i][j+1];

    n[i][j+1]=0;

    }

    }

    }

    }

    for(i=0;i<SIZE;i++)

    {

    for(a=0,j=0;j<SIZE;j++)

    {

    if(n[i][j]!=n[i][j+1]&&n[i][j]!=0||n[i][j]==2048)

    {

    m[a++]=n[i][j];

    n[i][j]=0;

    }

    else if(n[i][j]==n[i][j+1])

    {

    m[a++]=n[i][j]+n[i][j+1];

    score+=m[a-1];

    n[i][j]=0,n[i][j+1]=0;

    }

    }

    for(j=0;j<SIZE;j++)

    {

    n[i][j]=m[j];

    m[j]=0;

    }

    }

    }

    void tos(int n[][SIZE])

    {

    int i,j,a;

    int m[SIZE];

    for(a=0;a<SIZE;a++)

    m[a]=0;

    for(j=SIZE-1;j>=0;j--)

    {

    for(a=SIZE-1;a>=0;a--)

    {

    for(i=SIZE-1;i>0;i--)

    {

    if(n[i][j]==0)

    {

    n[i][j]=n[i-1][j];

    n[i-1][j]=0;

    }

    }

    }

    }

    for(j=SIZE-1;j>=0;j--)

    {

    for(a=SIZE-1,i=SIZE-1;i>=0;i--)

    {

    if(n[i][j]!=n[i-1][j]&&n[i][j]!=0||n[i][j]==2048)

    {

    m[a--]=n[i][j];

    n[i][j]=0;

    }

    else if(n[i][j]==n[i-1][j])

    {

    m[a--]=n[i][j]+n[i-1][j];

    score+=m[a+1];

    n[i][j]=0,n[i-1][j]=0;

    }

    }

    for(i=SIZE-1;i>=0;i--)

    {

    n[i][j]=m[i];

    m[i]=0;

    }

    }

    }

    void tod(int n[][SIZE])

    {

    int i,j,a;

    int m[SIZE];

    for(a=0;a<SIZE;a++)

    m[a]=0;

    for(i=SIZE-1;i>=0;i--)

    {

    for(a=SIZE-1;a>=0;a--)

    {

    for(j=SIZE-1;j>0;j--)

    {

    if(n[i][j]==0)

    {

    n[i][j]=n[i][j-1];

    n[i][j-1]=0;

    }

    }

    }

    }

    for(i=SIZE-1;i>=0;i--)

    {

    for(a=SIZE-1,j=SIZE-1;j>=0;j--)

    {

    if(n[i][j]!=n[i][j-1]&&n[i][j]!=0||n[i][j]==2048)

    {

    m[a--]=n[i][j];

    n[i][j]=0;

    }

    else if(n[i][j]==n[i][j-1])

    {

    m[a--]=n[i][j]+n[i][j-1];

    score+=m[a+1];

    n[i][j]=0,n[i][j-1]=0;

    }

    }

    for(j=SIZE-1;j>=0;j--)

    {

    n[i][j]=m[j];

    m[j]=0;

    }

    }

    }

『柒』 用c語言編程使游戲的各種兵種,道具,金錢等數值達到相對平橫

給你修改好了。20分,有點少了,呵呵。
/*游戲:撲克牌搓點游戲
規則:您將隨機抽取其中兩張和電腦進行對抗,
2張牌相加,個位大的勝出,其中對子比單牌大,
若都是對子,對子大的勝出。
您可以根據提示下注,起始資金均為1000元,
當一方財產小於0時,宣布破產,另一方勝出。
作者:於吉祥
日期:20090220
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_M 1000
enum colour
{
HEI = 0,
HONG,
MEI,
FANG,
};
void display(int number , int sign)
{
printf("%s\n","╭——╮");
switch(number)
{
case 0:
printf("%s\n","│0 │");
break;
case 1:
printf("%s\n","│A │");
break;
case 2:
printf("%s\n","│2 │");
break;
case 3:
printf("%s\n","│3 │");
break;
case 4:
printf("%s\n","│4 │");
break;
case 5:
printf("%s\n","│5 │");
break;
case 6:
printf("%s\n","│6 │");
break;
case 7:
printf("%s\n","│7 │");
break;
case 8:
printf("%s\n","│8 │");
break;
case 9:
printf("%s\n","│9 │");
break;
case 10:
printf("%s\n","│10 │");
break;
case 11:
printf("%s\n","│J │");
break;
case 12:
printf("%s\n","│Q │");
break;
case 13:
printf("%s\n","│K │");
break;
default:
printf("error");
break;
}
// printf("%s\n","│ │");
printf("%s","│ ");
switch(sign)
{
case HEI:
printf("%c",06);
break;
case HONG:
printf("%c",03);
break;
case MEI:
printf("%c",05);
break;
case FANG:
printf("%c",04);
break;
default:
break;
}
printf("%s\n"," │");
printf("%s\n","│ │");
printf("%s\n","╰——╯");
}

int compare(int x[] , int y[])
{
int sign,a,b;
if((x[0] == x[1])&&(y[0] == y[1]))
{
if(x[0] == y[0])
sign = 0;
else if(x[0] > y[0])
sign = 1;
else
sign = -1;
}
else if(x[0] == x[1])
sign = 1;
else if(y[0] == y[1])
sign = -1;
else
{
a = (x[0]+x[1])%10;
b = (y[0]+y[1])%10;
if(a == b)
sign = 0;
else if(a > b)
sign = 1;
else
sign = -1;
}
return sign;
}

void main()
{
int i,chip;
int Per[2],Com[2];
int Mon_Per = MAX_M , Mon_Com = MAX_M;
int Colour_Per[2] , Colour_Com[2];
printf("撲克牌搓點游戲\n");
printf("---------------\n");
system("pause");

while(1)
{
system("cls");
if(Mon_Per <=0)
{
printf("您已身無分文,游戲退出!");
break;
}
if(Mon_Com <=0)
{
printf("電腦已經被你贏光了,恭喜你獲勝!");
break;
}

srand( time(NULL) );
for(i=0;i<2;i++)
{
Per[i] = rand()%13+1;
Colour_Per[i] = rand()%4;
Com[i] = rand()%13+1;
Colour_Com[i] = rand()%4;
}

printf("當前余額:你(%d),電腦(%d)\n",Mon_Per,Mon_Com);
// printf("牌已經抽取,你抽到的牌為:%d %d\n",Per[0],Per[1]);
printf("牌已經抽取,你抽到的牌為:\n");
for(i=0;i<2;i++)
display(Per[i],Colour_Per[i]);

printf("請下註:");
RET: scanf("%d",&chip);
if(chip>500)
{
printf("最大可下注為500,請重新下注!\n");
goto RET;
}
Mon_Per -= chip;
Mon_Com -= chip;
if(Mon_Per < 0)
{
printf("您的余額不足,請重新下注!");
Mon_Per += chip;
Mon_Com += chip;
goto RET;
}
if(Mon_Com < 0)
{
printf("電腦余額不足,請重新下注!");
Mon_Per += chip;
Mon_Com += chip;
goto RET;
}

switch(compare(Per,Com))
{
case 0:
printf("平局!");
Mon_Per += chip;
Mon_Com += chip;
break;
case 1:
printf("你贏了!");
Mon_Per += 2*chip;
break;
case -1:
printf("電腦贏了!");
Mon_Com += 2*chip;
break;
default:
printf("系統出錯!");
break;
}
// printf("電腦抽到的牌為:%d %d\n",Com[0],Com[1]);
printf("電腦抽到的牌為:\n");
for(i=0;i<2;i++)
display(Com[i],Colour_Com[i]);

system("pause");

}
printf("游戲結束!");
system("pause");
}

『捌』 如何編程游戲

首先學會一門語言,你可以從初級的C跳到C++,有些人喜歡MFC,用它也可以編游戲,但最好還是拋掉部分MFC的東西,使用DirectX吧。因為我主要學的C++,我就只談C++了。其實還有相當好的語言如:DELPHI、JAVA等,有精力還是去學學吧!其實語言並不是最重要,關鍵是面向該語言的開發工具、引擎、源碼的數量會對將來的開發進程大有幫助。對於已經會MFC的人,「傳奇的故事學VC編游戲」似乎是福音,因為它最後還是過渡到DirectX。 其次掌握一種工具,比如引擎、腳本等。引擎就是發動機的內核啦,你有什麼好想法,就靠它來驅動實現。「工欲善其事,必先利其器」,與其在一個引擎上投入過多精力,不如比較選優,多搜索新的引擎,比如開發中的Novashell就不錯,一旦公布源碼,還是比較有力的。作者就是開源即時RPG游戲「DINK SMALLWOOD」的作者Seth A. Robinson等。 引擎有的是面向游戲框架的,如POPCAP FRAMEWORK搭好了框架,剩下的由你來填充。有的是面向底層DirectX的封裝,比如HGE、SDL、Allego、Y2GE等。有的本身就已經是個完整的游戲了,比如金點的聖II源代碼游戲引擎,會對你很有幫助,實際上,你完全可以先拋掉其它的,從聖劍英雄傳2開始,體會其開發思路,然後再利用一些引擎改善它。如果是想編即時戰略游戲,可以看看Pptactical、stratagus等。 人工智慧是你不得不掌握的一門技術,會使你的游戲倍放光彩,比如A*尋路、攻擊目標的選擇、經濟學、有限狀態機、骨骼動畫等,工具有OpenSteer、pathlib、micropather等。物理引擎也是,一旦擁有物理引擎你就不願意丟掉它,比如Physics2D、Polycolly、flatland等。 如果學腳本,建議用LUA吧,WOW就是用它。同時提一下luabind工具。當然你也可以使用自己規定的腳本引擎。 XML技術不錯,現在很流行,WOW、Novashell、POPCAP FRAMEWORK等都使用了。用它來管理游戲資源及資源調度很方便。 先在已有的簡單代碼上修改出自己的一個簡單成形游戲是比較好的開端,至少可以鼓舞你,不要好高騖遠,想一上來就怎麼怎麼的。借鑒現有的開源

『玖』 用C語言編寫一個簡單的打字母游戲,給出基本思路及完整程序。

# include<stdio.h>
# include <conio.h>
# include <graphics.h>
# include <time.h>
# pragma comment(lib,」Winmm.lib」) //引用Windows Multimedia APT

int score =0; //全局變數********整型的分數
char s[5]; //全局變數****字元型的分數
struct player_ //自定義的結構體,並順便定義一個結構體變數
{
char name[20];
int score_;
}player[11];
/***************函數聲明*****************/
void record_(); //記錄彼此成績函數
void welcome( ); //歡迎界面函數
void instructions( ); //游戲說明界面函數
void gane (int rank2); //游戲函數
void record ( ); //顯示記錄函數
int rank_(char rank1); //等級選擇函數
void goodbye ( ); //退出界面函數

/**************主函數**************/
int main ()
{
char rank1; //rank1接受從鍵盤輸入的字元,根據字元判斷等級
int rank2=15; // 控制延時時間,從而控制速度
intsign=1; // 當做標記,用於標記是否彈出MessageBox對話框

welcome ( ); //調用歡迎界面函數
instructions ( ); //調用游戲什麼函數
record( ); //調用顯示記錄函數
InputBox(player[10].name,20,"請輸入玩家昵稱"; //以對話框形式獲取用戶輸入函數
rank1=getch();//讀入一個字母
rank2=rank_(rank1); //調用等級函數
game (rank2); //調用游戲函數
HWND wnd =GetHWnd();
while (sign) //sign作為標記,執行循環
if (MessageBox(wnd,"游戲結束!!!\n再來一局,挑戰更高分數","詢問",MB_YESNO|MB_ICONQUESTION)==IDYES)
game (rank2);
else
{
sign=0;
goodbye( );
}
closegraph( );
return 0;
}
/***************記錄本次成績函數***************/
void record_()
{
FILE*fp; //文件指針
int i,j;
struct player_t; //定義結構體變數t,冒泡法比較大小時用
player[10].score_=score; //把該局的分數賦給該局用戶的結構體變數中
fp=fopen("記錄.dat","rb"); //打開二進制文件
for (i=0;i<10;i++)
{
fread(player[i].name,20,l,fp); //讀入記錄中的成績和名字
fread (&player[i].score_,4,l,fp);
}
fclose(fp); //關閉二進制文件
for (j=0;j<10;j++) //冒泡法排序
for (i=0;i<10-j;i++)
if (player[i].score_)
{
t=player[i];
player[i]=player[i+1];
player[i+1]=t;
}
fp=fopen("記錄.dat","wb"); //打開文件
for (i=0;i<10;i++) //把排好序列的數據存入記錄文件
{
fwrite(player[i].name,20,l,fp);
fwrite (&player[i].score_,4,l,fp);
}
fclose(fp); //關閉文件
}
/****************歡迎界面函數****************/
void welcome ( )
{
char ch;
mciSendString("open\"res\\Sleep Away.mp3\"alias mymusic",NULL,0,NULL);

initgraph(640,480); //初始化畫圖界面
IMAGE img; //定義IMAGE對象
loadimage (&img,"res\\00.jpg"); //讀取圖片到img對象中
putimage (0,0,&img); //在坐標(0,0)位置顯示IMAGE對象
ch=getch(); //吸收掉一個按鍵
cleardevice(); //清屏
}

/***************游戲說明界面函數**************/
void instructions()
{
int c=255; //控制變色的變數
setcolor(YELLOW); //設置顏色
setfont (30,0,"黑體"); //設置字體
outtextxy(0,0,"游戲說明"); //輸出文字
setcolor(WHITE);
setfont(28,0,"宋體");
outtextxy(0,30,"一、每次游戲下落200個字母"); //輸出文字
outtextxy(0,58,"二、請按數字鍵選擇游戲等級");
outtextxy(0,86,"三、統計被擊中的個數");
setfont(30,0,"華文行楷")
outtextxy (20,220,"等級一二三四 五六七八九");
outtextxy(20,260,「按鍵 1 2 3 4 5 6 7 8 9」);
while (!kbhit()) //kihit()作用是判斷是否有字幕輸入
{
setcolor(RGB(c,255,0));
setfont (80,0,"楷體");
outtextxy(140,130,"請選擇等級");
setcolor(RGB(c,0,255));
setfont(100,0,"Wickenden Cafe NDP");
outtextxy(100,135,"Let's go!!!");
c-=25; //控制顏色的變數自減
if(c<0)c=255; //控制顏色的變數小於0時,再把255賦給c
cleardevice(); //清屏
}
/***************退出界面函數***************/
void goodbye()
{
int c=255; //控制變色變數
cleardevice(); //清屏
setcolor(YELLOW);
setfont (48,0,"黑體");
outtextxy (104,120,"的最終成績是: ");
setfont (48,0,"華文楷體");
setcolor(RGB(255,255,0));
outtextxy(140,320,"按任意鍵退出遊戲");
setcolor(YELLOW);
setfont(48,0,"黑體");
outtextxy (104,120,"的最終成績是: ");
outtextxy(104,70,player[10].name);
record_(); //調用記錄本次成績函數
while(!kbhit())
{
setcolor(RGB(255,0,c-100)); //設置顏色
setfont(100,0,」Wickenden Café NDP」);
outtextxy(400,90,s); //輸出數字
setcolor(RGB(c,0,255));
setfont(48,0,」黑體」);
if (score==200)
outtextxy(100,200,」全部擊中!!!」);
else
if(score>190)
outtextxy(100,200,」不錯!繼續加油!」);
else
outtextxy(100,200,」不要灰心!繼續加油!」);
c-=25;
if(c<0)
c=255;
Sleeep(20); //延時20秒
}
getch( ); //提供給用戶時需要等待輸入後再退出
}
/**************等級選擇函數**************/
int rank_(char rank1)
{
int rank2;
switch(rank1) //判斷字元,確定等級
{
case』0』:rank2=11;break;
case』1』:rank2=10;break;
case』2』:rank2=9;break;
case』3』:rank2=8;break;
case』4』:rank2=7;break;
case』5』:rank2=6;break;
case』6』:rank2=5;break;
case』7』:rank2=4;break;
case』8』:rank2=3;break;
case』9』:rank2=2;break;
default:rank2=15;break;
}
return rank2;
}

/**************顯示記錄函數***********/
void record( )
{
FILE *p; //文件指針
int a[10],j;
char b[10][10];
fp=fopen(「記錄。dat」,」rb」); //打開文件
for (j=0;j<10;j++)
{
fread(player[j].name,20,1,fp); //讀取文件中的信息
fread(&player[j].score_,4,1,fp);
}
fclose(fp); //關閉文件
setfont(60,0,」Arial」);
setcolor(RGB(250,250,0));
outtextxy(250,0,」TOP10」);
for(j=0;j<10;j++)
{
sprintf(「b[j],%d」,player[j].score_); //把整型轉換為字元型
setcolor(RGB(0,100,255));
setfont(40,0,」Arial」);
outtextxy(420,50+40*j,b[j]);
outtextxy(120,50+40*j,player[j].name); //輸出名字

/**********游戲函數******************/
void game (int rank2)
{
cleardevice( ); //清屏
score=0; //清除掉原有的分數
outtextxy(0,0,」玩家:」);
outtextxy(90,0,player[10].name);
setfont(20,0,」Arial」);
outtextxy(100,460,」 人生有享受片刻優雅恬適的權力,讓打字母游戲放鬆你一下吧!」);
int i;
char target; //目標字母
char key; //用戶的按鍵
intx,y; //字母的位置
int flag =1; //標記是否按了退出鍵
int sum=0; //成績計數
int num =200; //規定下落字母的個數
srand (time(NULL)); //隨機時間種子,設置第一個隨機函數的值
setfillstyle(BLACK); //設置下面矩形內圖的顏色
setcolor(YELLOW); //
line(0,450,640,450); //用3條線規定一下工作區
line(0,440,640,440); //用3條線規定一下工作區
line(0,40,640,40); //用3條線規定一下工作區

while (flag&&num)
{
setfont(40,0,」宋體」); //設置字母的字體和大小
i=rand()%2; //rand()函數返回0~32767之間的一個整數
if(i)
target=97+rand()%26; //產生任意小寫字母
else
target=65+rand()%26; //產生任意大寫字母
x=rand()%610; //產生任意下落位置
for (y=41;y<380;y++)
{
setcolor (RGB(255,0,255));
outtextxy(x,y,target); //顯示字母

if(kbhit())
{
key=getch(); //獲取用戶按鍵
if ((key==target)||( key==target-32)||( key==target+32))
{
score++; //分數統計
sprintf(s,」%d」score);
setfont(30,0,」Arial」);
outtextxy(500,0,「分數」);
outtextxy(600,0,s); //輸出分數
bar(x-10,y-10,x+35,y+50); // 擊中用黑框形擦去字母
break; //跳出循環,進行下一個字母
}
else if (key==27) //判斷是否按了
{
flag=0; //若果按ESC,退出遊戲主循環
break;
}
}
Sleep(rank2); //控制清除字母的時間愛你也就是控制下落速度
bar(x,y,x+35,y+60); //擦最下面的字元
}
num--; //計數
}
}

『拾』 誰會貪吃蛇游戲用C語言編法的思路,還有給我發過來

用鏈表做
用數組作為地圖 用數值表示牆或事物
沒個結點都記錄坐標值
移動時前一個結點的坐標作為後一個結點的坐標
移動時頭結點判斷要前進的下一個位置的 是牆還是事物還是自身
牆或自身就結束游戲 事物則在最後加一個結點