当前位置:首页 » 编程语言 » 游戏改造装备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语言编法的思路,还有给我发过来

用链表做
用数组作为地图 用数值表示墙或事物
没个结点都记录坐标值
移动时前一个结点的坐标作为后一个结点的坐标
移动时头结点判断要前进的下一个位置的 是墙还是事物还是自身
墙或自身就结束游戏 事物则在最后加一个结点