用c语言写游戏脚本
可以,但是C和C语言好学难掌握。写脚本时容易出现bug等问题,但其灵活性和简洁性不容忽视。目前比较流行的脚本:python、Lua、ruby和Erlang,详情请看本文。
c语言游戏编程,落鸟求代码。 坠落的鸟
# includestdio.h
#includestdlib.h
#includeconio.h
#includetime.h
#includeWindows.h
int Grade = 1,Score = 0,Max_blank = 9,Distance = 18
结构鸟{ int x;int y;};//定义一个Birds数据类型(有3个成员)
Birds * Bird =(Birds *)malloc(sizeof(Birds))。//定义Birds类型的指针变量Bird并赋一个初始值。
struct Bg{int x,y;int l _ blankBg * priBg *下一个;};//定义一个Bg数据类型(有5个成员)
Bg * Bg1 =(Bg *)malloc(sizeof(Bg));//定义Bg指针变量Bg1,赋初始值。
Void Position(int x,int y) //光标定位函数(在指定位置输出)
{COORD pos = { x - 1,y-1 };
HANDLE Out = GetStdHandle(STD _ OUTPUT _ HANDLE);
SetConsoleCursorPosition(Out,pos);
}
Void Csh() //初始化接口
{
printf("══════════════════════════════════════\n”);
printf("■■■Flappy Bird \ n C语言\ n ");
printf("■■■\ n ");
printf("■■■\ n ");
printf("■■■■Fool:YY poss original \ n ");
Printf(" ■■ ■■鬼混日期:2014年2月\ n ");
printf("■■■\ n ");
Printf ("■■■■改编自:明白蝉2021.7 \ n ");
Printf(" ■■ ■■操作:按向上箭头键让小鸟起飞\ n ");
printf("■■\ n ");
printf("■■\ n ");
printf("■■■\ n ");
printf("■■■\ n ");
printf("■■■\ n ");
printf("■■■\ n ");
printf("■■■■devc贯穿\ n ");
printf("══════════════════════════════════════\n”);
Printf("按下按钮继续…);
getch();
系统(“cls”);
}
Void PrFK() //输出框(游戏范围区域)
{ int I;
位置(1,1);printf("╔”);位置(79,1);printf("╗”);
位置(1,24);printf("╚”);位置(79,24);printf("╝”);
for(I = 3;i = 78I = 2){位置(I,1);printf("═”);位置(I,24);printf("═”);}
for(I = 2;i = 23我)
{位置(1,I);printf("║”);if(i11)printf("0%d ",I-1);else printf("%d ",I-1);
位置(79,I);printf("║”);
}
位置(4,25);Printf("小鸟马上就要出现了,请按下按钮准备起飞……");
getch();
位置(4,25);printf(" ");
}
Void CreatBg() //创建障碍坐标(易于打印输出)
{ Bg * Bg2 =(Bg *)malloc(sizeof(Bg));
bgx = 90;bgy = 8;//确定一对障碍物的基本坐标(此时数值在游戏框外)
Bg2-x = Bgx距离;bg2-y = 9;//下一个障碍物的基本坐标x和y
bgl _ blank = Max _ blank-Grade;//障碍物上下部分之间的空白距离l_blank
bg2-l _ blank = Max _ blank-Grade;
bgnext = Bg2;bgpri = Bg2;
bg2-next = Bg1;bg2-pri = Bg1;
}
Void InsertBg(Bg *p) //随机改变障碍物的Y坐标,使空白通道上下变化。
{ int temp
Bg * Bgs =(Bg *)malloc(sizeof(Bg));
Bgs-x = p-pri-x距离;
bgs-l _ blank = Max _ blank-Grade;
srand((int)time(0));//启动随机数生成器
temp = rand();//生成一个随机数,赋给temp。
if(温度% 2 == 0)
{ if((temp % 4 p-pri-y Max _ blank-Grade)21)
bgs-y = p-pri-y temp % 4;
else Bgs-y = p-pri-y;
}
其他
{ if((p-pri-y-temp % 4)2)Bgs-y = p-pri-y-temp % 4;
else Bgs-y = p-pri-y;
}
bgs-pri = p-pri;bgs-next = p;
p-pri-next = Bgs;p-pri = Bgs;
}
Void CreatBird() //建立鸟的坐标(鸟的位置最初是打印出来的)
{ Bird-x = 41;bird-y = 10;}
Int CheckYN(Bg *q) //判断游戏是否结束(0表示结束,1表示不结束)。
{ Bg * p = q;int I = 0;
while ( i = 5)
{if (Bird-y23)返回0;
if (Bird-x == p-xBird-y = p-y)返回0;
if((Bird-x = = p-x | | Bird-x = = p-x 1 | | Bird-x = = p-x 2)Bird-y = = p-y)返回0;
if(Bird-x = = p-x Bird-yp-y p-l _ blank)返回0;
if((Bird-x = = p-x | | Bird-x = = p-x 1 | | Bird-x = = p-x 2)Bird-y = = p-y p-l _ blank)
返回0;
p = p-next;
}
返回1;
}
Void Check_Bg(Bg *q) //检查第一个障碍物的坐标是否在游戏区域内。
{ Bg * p = q;int i = 0,temp
while ( i = 5)
{ if(p-x-4)p = p-next;
其他
{ srand((int)time(0));temp = rand();
if(温度% 2 == 0)
{ if((temp % 4 p-y Max _ blank-Grade)21)p-y = p-y temp % 4;
else p-y = p-y;p-x = p-pri-x距离;
p-l _ blank = Max _ blank-Grade;
}
其他
{ if((p-y-temp % 4)2)p-y = p-y-temp % 4;
else p-y = p-y;p-x = p-pri-x距离;
p-l _ blank = Max _ blank-Grade;
}
}
}
}
Void Prt_Bg(Bg *q) //打印出障碍物(根据其X,Y坐标输出)。
{ Bg * p = q;int i = 0,k,j;
while ( i = 5)
{if (p-x0 p-x = 78)
{ for(k = 2;KP-y;k){位置(p-x ^ 1,k);printf("■");printf("■");printf(" ");}
位置(p-x,p-y);
printf("■");printf("■");printf("■");printf(" ");
位置(p-x,p-y p-l _ blank);
printf("■");printf("■");printf("■");printf(" ");
k = k p-l _ blank 1;
for(k;k = 23k){位置(p-x ^ 1,k);printf("■");printf("■");printf(" ");}
}
p = p-next;
如果(p-x == 0)
{ for(j = 2;jp-y;j){位置(p-x ^ 1,j);printf(" ");printf(" ");}
位置(p-x 1,p-y);
printf(" ");printf(" ");printf(" ");
位置(p-x 1,p-y Max _ blank-Grade);
printf(" ");printf(" ");printf(" ");
j = j Max _ blank-1级;
for(j;j = 22j){位置(p-x ^ 1,j);printf(" ");printf(" ");}
}
}
}
Void PrtBird() //打印出鸟。
{位置(Bird-x,Bird-y-1);printf(" ");
位置(Bird-x,Bird-y);printf("ю”);
位置(38,2);printf("分数:%d ",分数);
}
Void Loop_Bg(Bg *q) //将障碍物的X坐标向左移动,记录结果。
{ Bg * p = q;int I = 0;
while ( i = 5)
{ p-x = p-x-1;p = p-next;
if (Bird-x == p-x)
{ Score = 1;
if(分数% 4 == 0 Grade4)等级;
}
}
}
int main()
{ int I = 0;int t;
while (1)
{
csh();PrFK();creat BG();
insert BG(Bg1);insert BG(Bg1);insert BG(Bg1);
creat bird();
while (1)
{如果(!CheckYN(Bg1))break;
check _ Bg(Bg1);PRT _ Bg(Bg1);
PRT bird();loop _ Bg(Bg1);
Bird-y = Bird-y 1;
If (GetAsyncKeyState(VK_UP)) //按向上箭头键。
{位置(Bird-x,Bird-y-1);printf(" ");
Bird-y = Bird-y-4;
}
睡眠(200);//程序延迟200ms(数值决定游戏速度)
I = 0;
}
位置(6,25);
Printf("游戏结束!请输入:0。1号出口。再玩一次”);
scanf("%d ",t);
if(t = = 0)break;
系统(“cls”);得分= 0;
}
返回0;
}
如何用C语言编程制作汉诺塔游戏? #include\x0d\x0a void move(char x,char y)\ x0d \ x0a { \ x0d \ x0a printf(" % c-% c \ n ",x,y);\ x0d \ x0a } \ x0d \ x0a void Hanoi(int n,char one,char two,char three)\ x0d \ x0a { \ x0d \ x0a if(n = = 1)move(one,three);\ x0d \ x0a else \ x0d \ x0a { \ x0d \ x0a Hanoi(n-1,一,三,二);\x0d\x0a移动(一、三);\x0d\x0a河内(n-1,二,一,三);\ x0d \ x0a } \ x0d \ x0a } \ x0d \ x0a main()\ x0d \ x0a { \ x0d \ x0a int m;\x0d\x0a printf("输入磁盘数量:");\x0d\x0a scanf("%d ",m);\x0d\x0a printf("移动的步骤= disks:\ n ",m);\x0d\x0a hanoi(m,' A ',' B ',' C ');\x0d\x0a }\x0d\x0a算法介绍:\x0d\x0a其实算法很简单。当板数为n时,移动的次数应该等于2^n _ 1(有兴趣可以自己证明)。后来,一位美国学者发现了一种出乎意料的简单方法,只需要依次两步。首先将三列按顺序排列成成品字体,将所有圆盘按降序放在A列上,根据圆盘数量确定列排列顺序:若n为偶数,A B C;顺时针放置;\x0d\x0a如果n是奇数,顺时针依次放A C B。\x0d\x0a (1)将光盘1从当前列顺时针移动到下一列,即当n为偶数时,如果光盘1在A列,则移动到B;如果光盘1在b列,将其移动到c;如果磁盘1在列c中,将其移动到a中,\x0d\x0a (2)接下来,将其他两列上的可移动磁盘移动到新列中。即,将非空列上的光盘移动到空列,当两列都不为空时,移动较小的光盘。此步骤不指定要移动哪个磁盘。你可能觉得有很多可能,其实不是,唯一能实施的行动就是。\x0d\x0a (3)重复操作(1)和(2),最后按照规定完成汉诺塔的移动。\x0d\x0a所以结果很简单,就是按照移动规则把金块往一个方向移动:\x0d\x0a比如汉诺塔三阶塔的移动:A → C,A → B,A → C,B → A,B → C,A → C \ x0d \ x0a汉诺塔问题也是一个程序。
c语言写的最好的三个猜谜游戏编程。 /*假设有A和B供猜测。
x代表剪刀,Y代表石头,Z代表布。
规则如下:
1.石头剪刀
2、布石
3、剪刀布
*/
#包含stdio.h
#定义WIN 1
#定义输-1
#定义等于0
/*游戏规则功能*/
int game_rule(char a,char b)
{
开关(a)
案例“x”:
{
开关(b)
case“x”:返回相等值;
大小写“y”:return LOSE;
case ' z ':return WIN;
}
案例“y”:
{
开关(b)
情况“x”:返回WIN
case“y”:返回相等值;
case ' z ':return LOSE;
}
案例“z”:
{
开关(b)
情况“x”:return LOSE;
大小写“y”:return WIN;
case“z”:返回等于;
}
}
/*主函数*/
无效总管(无效)
{
int ans
int a = b = 0;
char A;
char B;
做
{
prinf("请输入A:\ n ");
scanf("%c ",A);
getchar();
prinf("请输入B:\ n ");
scanf("%c ",B);
getchar();
//请自行添加有效性检查。
ans = game_rule(A,B);
if(ans==WIN)
{
a;
Prinf("A赢了%d场比赛\n ",A);
}
else if(ans==LOSE)
{
b;
Prinf("A赢了%d局\n ",b);
}
if((a==2)||(b==2))
{
prinf(“游戏结束”);
打破;
}
} while(1);
}
最后更新于 2023-10-07 16:39:49 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章