当前位置:科普知识站>综合知识>

c怎么写游戏

综合知识 阅读(3.04W)
1. 求C写的最简单的游戏

猜数字游戏,希望对你有帮助# include# include# includeint main(){ int a,b; char c; srand(time(NULL)); a=1+(rand()%1000); printf("I have a number between 1 and 1000.nCan you guess my number?nPlease type your first guess.n"); scanf("%d",&b); while(b!=-1) { if(b==a) { printf("Excellent! You guessed the number!nWould you like to play again(y or n)?"); scanf("%c",&c); scanf("%c",&c); switch(c){ case 'y': printf("I have a number between 1 and 1000.nCan you guess my number?nPlease type your first guess.n"); scanf("%d",&b); break; case 'n': goto END; break; } } while(ba) { printf("Too high.Try again."); scanf("%d",&b); } }END: return 0;}。

c怎么写游戏
2. 如何用c语言写一个游戏

请编译前在主目录下建立一个文本文件(xia.txt)内容为:0 0 0 0 0 哈哈 #include #include #include #include union REGS regs; unsigned int zhuan[5]; int Msinit(); void Setmouse(int left,int right,int top,int buttom); int Msread(int *xp,int *yp,int *bup); void Draw(int x,int y,int sizex,int sizey); main() {int mode=VGAHI,driver=VGA; unsigned int l; int i,gi,gj,j,flag=1;/*i,j是循环变量,flag是标记变量,-1:向x负半轴移动,+1:向x正半轴移动*/ double qx,qy,k,b=0.0,speech=0.4,x,y; double r=2.0,bx=60.0,byy=270.0; double pianx=100.0,piany=100.0,tx=20.0,ty=10.0,jx=2.0,jy=2.0; int mx=0,my=0,mb,sum;/*sum纪录砖块的数目*/ FILE * p; if((p = fopen("xia.txt", "r")) == NULL) {printf("The file cannot open!n"); exit(1);} initgraph(&driver,&mode,"tcBGI"); Msinit(); Setmouse((int)(pianx+1+bx/2),(int)((tx+jx)*8+pianx-1-bx/2),(int)byy+piany,(int)byy+piany); star:cleardevice();/*程序重载的介入点*/ sum=0; qx=100.0+pianx-10;qy=180.0+pianx-10;k=0.33; setcolor(7); rectangle((int)(pianx-2),(int)(piany-2),(int)((tx+jx)*8+2+pianx),302+piany); setcolor(1); rectangle((int)(pianx-1),(int)(piany-1),(int)((tx+jx)*8+1+pianx),301+piany); /*读取盘面情况*/ for(i=0;i<5;i++) fscanf(p,"%x ",&zhuan[i]); /*画砖块*/ for(i=0;i<5;i++) {l=1; for(j=0;j<16;j++) {if((zhuan[i]&l)==0) {Draw((int)((jx+tx)*((16*i+j)%8)+pianx+jx),(int)((jy+ty)*((int)((16*i+j)/8))+piany+jy), (int)tx,(int)ty); sum+=1; } l=l*2; } } for(;;) { setfillstyle(1, 0); bar(mx-bx/2,my,mx+bx/2,my+5); Msread(&mx, &my, &mb); Draw(mx-bx/2,my,bx,5); setcolor(0); circle(qx,qy,r); /*判断求是否反弹*/ if(qx-r<=pianx+1 || qx+r>=(tx+jx)*8+pianx-1) {flag=-flag;k=-k;} if(qy-r<=piany+1) k=-k; for(gi=0;gi<5;gi++) {l=1; for(gj=0;gj<16;gj++) { if((zhuan[gi]&l)==0) {j=(16*gi+gj)/8; i=(16*gi+gj)%8; x=(jx+tx)*i+jx+tx/2+pianx; y=(jy+ty)*j+jy+ty/2+piany; /*边判断1*/ if(qy>=y-ty/2 && qy<=y+ty/2 &&(pow(qx+r-x+tx/2,2)<1 || pow(qx-r-x-tx/2,2)<1)) {flag=-flag;k=-k; zhuan[gi]=zhuan[gi]|l; sum-=1; if(sum==0) {printf("Win!n");getch();goto star;} setfillstyle(1, 0); bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty) *j+piany+jy+ty); } else /*边判断2*/ if(qx> ;=x-tx/2 && qx<=x+tx/2 &&(pow(qy+r-y+ty/2,2)<1 || pow(qy-r-y-ty/2,2)<1)) {k=-k; zhuan[gi]=zhuan[gi]|l; sum-=1; if(sum==0) {printf("Win!n");getch();goto star;} setfillstyle(1, 0); bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty) *j+piany+jy+ty); } else /*角判断*/ if(pow(qx-x+tx/2,2)+pow(qy-y+ty/2,2)<=r*r || pow(qx-x-tx/2,2)+pow(qy-y+ty/2,2)<=r*r || pow(qx-x+tx/2,2)+pow(qy-y-ty/2,2)<=r*r || pow(qx-x-tx/2,2)+pow(qy-y-ty/2,2)<=r*r) {flag=-flag; zhuan[gi]=zhuan[gi]|l; sum-=1; if(sum==0) {printf("Win!n");getch();goto star;} setfillstyle(1, 0); bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty) *j+piany+jy+ty); } }l=l*2;}} /*棍棒的反弹*/ if(qx<=mx+bx/2 && qx>=mx-bx/2 && pow(qy+r-my,2)<1) {k=-(k/pow(k*k,0.5))*(0.3*bx/(pow(pow (qx-mx,2),0.5)+0.000001));} if((int)(qy+r)>my+0.5) {printf("DEAD!");Setmouse(0,0,640,480);getch();exit(1);} b=qy-qx*k; if(flag==1) qx=qx+speech/pow(1.0+k*k,0.5); if(flag==-1) qx=qx-speech/pow(1.0+k*k,0.5); qy=qx*k+b;/*计算球心坐标*/ setcolor(14); circle((int)qx,(int)qy,r); delay(1); if(mb==1) {Setmouse(0,0,640,480);exit(1);} } } /*这个函数用于实现鼠标的初始化*/ int Msinit() {int recored; regs.x.ax=0; int86 (0x33, & regs, & regs); recored=regs.x.ax; if(recored==0) {printf("Mouse not foundd or Mouse driver not installed.n"); return 0; } else return recored; } /*下面的函数用于实现设置鼠标的移动范围*/ void Setmouse(int left,int right,int top,int buttom) { regs.x.ax=7; regs.x.cx=left; regs.x.dx=right; int86(0x33,& regs,& regs); regs.x.ax=8; regs.x.cx=top; regs.x.dx=buttom; int86(0x33,& regs,& regs); } /*下面这个函数用于实现鼠标的读取*/ int Msread(int *xp,int *yp,int *bup) {int xnew,ynew,ch; if(kbhit()) return getch(); regs.x.ax=3; int86(0x33,& regs,& regs); xnew=regs.x.cx; ynew=regs.x.dx; *bup=regs.x.bx; *xp=xnew; *yp=ynew; return -1; } /*下面这个子程序是完成描绘一个按钮*/ void Draw(int x,int y,int sizex,int sizey)/* x, y为左上角坐标sizex,sizey为长和宽*/ {int sizx=sizex-1; int sizy=sizey-1; setcolor(15);/*这里最好用白色*/ line(x,y,x+sizx-1,y); line(x,y+1,x+sizx-2,y+1); line(x,y,x,y+sizy-1); line(x+1,y,x+1,y+sizy-2); setcolor(8);/*这里最好用深灰色*/ line(x+1,y+sizy,x+sizx,y+sizy); line(x+2,y+sizy-1,x+sizx,y+sizy-1); line(x+sizx-1,y+1,x+sizx-1,y+sizy); line(x+sizx,y+2,x+sizx,y+sizy); setcolor(7);/*这里最好用灰色*/ putpixel(x,y+sizy,3); putpixel(x+1,y+sizy-1,3); putpixel(x+sizx,y,3); putpixel(x+sizx-1,y+1,3); setfillstyle(1, 7);/*这里最好用灰色,设置填充模式*/ bar(x+2,y+2,x+sizx-2,y+sizy-2); } 参考资料:。

3. 怎样用C语言编写一个小游戏

“贪吃蛇”C代码:#include #include #include #include #include #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;i时间,即是移动速度 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;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("07"); snk.len++; score += 100; snk.speed -= 5; Flag = 1; } //007是响铃 else Flag = 0; //没吃到食物Flag的值为0 if(snk.speed<150) 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; //蛇头触。

4. C语言怎么做游戏

可以 但是 1个人 不可以 首先术业有专攻 企划考虑游戏内容风格 画师们制造具体人物风格 关卡样子等等 程序师完成游戏内部动作 当然这是楼主说的企业级作品 必须是团队来完成 一个没那么精力的

还有 C语言 能做这些游戏 但是 如果你在企业就职时 做的面试作品 或 以后工作 必须是 c++

因为同样的程序 C语言站的内存太大 而且 比起c++稍差

在于C语言运行后 随机在内存中寻找放数据的地方

c++则是先确保 在输出

5. 如何用c语言编写小游戏

#包括

#包括中

#包括中

的#include“windows.h的”

无效gotoxy(诠释十,诠释y)/ *定义gotoxy函数* /

COORD℃;

CX = X-1;

CY = Y-1;

SetConsoleCursorPosition(GetStdHandle( STD_OUTPUT_HANDLE),C);

}

国际主要()

{

结构点

整数的x,y ;/ *该点的位置,其中x和y坐标* /

整数XV,YV ;/ *点x轴的速度,y轴* /

}人;

长的磷;

男人X = man.y = 20;

man.xv = man.yv = 1;

系统(“CLS”);

P =千兆;

同时(对 - )

{

如果(P%50000)

继续;

gotoxy(man.x,man.y);/ *将光标移动到指定的坐标* / 的printf(“”);/ *输出一个空格,前面的字符擦拭* /

man.x + = man.xv ;/ *水平的X轴速度运动* /

方向man.y + = man.yv ;/ * y轴垂直方向速度* /

如果(man.x == 0 | | man.x == 80) man.xv * = - 1;

如果(man.y == 0 | | man.y == 80)

man.yv * = -1;

gotoxy(man.x,man.y);

的printf(“%C B”,2); / * 2 * / }

用getchar();

返回0 ;

}

这是一个感人的笑脸,你可以用最简单的开始

6. 教你如何使用C语言编写简单小游戏

爱玩是人的天性,而C语言是我们计算机专业都要学习的一门基础 学科.一般来说,是比较枯燥的.那么,我们能不能通过编一些小游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦 ,枯燥的事,它变得象电脑游戏一样充满好奇,富有乐趣. 1, 总是从Hello,world开始 学习编程的第一个程序,一般就是打印一个亲切的词语——"Hell o,world!".让我们来看看这个最简单的C程序:#incolude /*把输入输出函数的头文件包含进来*/int main(){printf("Hello, world!");/*在屏幕上输出字符串"Hello,world!"*/return 0;/*退出main函数,并返回0*/} 下面我们发现几个值得改进的地方,1,程序的运行结果一闪而过 .2,每执行这个程序一次都能看见上次运行留下的字符.3,我们 还希望屏幕输出一个笑脸来欢迎我们. 让我们来改进一下这个程序吧!1,在return语句的前面加一句:getch ();,表示按任意键结束.2,在printf语句前用clrscr函数清屏,要使用这个函数和getch函数,需要在程序开头再包含头文件conio.h.3,ASCII码也有 许多非常好玩的字符,比如ASCII码值为2的就是一个笑脸,我们可 以用printf("%c", 2)来输出一个笑脸. 现在我们把Hello,world程序改成一个更好看的Hello,world了.下面让我们开始做游戏吧! 2, 心动的开始,一个运动中的笑脸 大家小时侯喜欢看动画片吗?哈哈,我猜你们都喜欢吧!下面就让我们来做一个小动画吧.在屏幕上显示一个运动的小笑脸,而且当它到达屏幕的边缘时会自动弹回来.先在程序定义一个在屏幕中运动的点的结构:struct move_point{ int x, y;/*该点的位置,包括x坐标和y坐标*/ int xv, yv;/*该点在x轴,y轴的速度*/};运动的原理是,先擦去物体先前的轨迹,让物体按其速度移动一段距离,再画出该物体.让我们看到以下代码:gotoxy(man.x, man.y);/*把光标移到指定的坐标*/printf(" ");/*输出一个空格,把先前的字符擦去*/然后我们让物体按其速度运动:man.x += man.xv;/*水平方向按x轴的速度运动*/man.y += man.yv;/*垂直方向按y轴的速度运动*/运动后还要判断物体是否出界,如果出了界,就令物体反弹,即让 它下一刻的速度等于现在的速度的相反数.最后打印出这个笑脸:gotoxy(man.x, man.y);printf("%cb", 2); /*输出ASCII码值为2的"笑脸"字符*/怎么样?是不是很有趣呢?不过这个笑脸一直是自己运动,能不能 让我们来控制它运动呢? 不过这个程序没有什么目的,也没有什么判断胜负的条件.下面我们就利用这个能控制它移动的笑脸来做一个更有趣的游戏吧! 4, 在迷宫中探索 小时侯,我常在一些小人书和杂志上看见一些迷宫的游戏,非常喜欢玩,还常到一些书上找迷宫玩呢.好的,现在我们用C语言来编个迷宫的游戏,重温一下童年的乐趣. 首先,我们定义一个二维数组map,用它来保存迷宫的地图,其中map[x][y] == '#'表示在(x,y)坐标上的点是墙壁.DrawMap函数在屏幕上输出迷宫的地图和一些欢迎信息.在main函数里,我们定义了"小人"man的坐标和"目的地"des的 坐标.在游戏循环中,我们增加了一些用来判断胜负的语句:if (man.x == des.x && man.y == des.y) /*如果人的坐标等于目的地的坐标*/{ gotoxy(35, 3); printf("Ok! You win!"); /*输出胜利信息*/….}在判断按键时,如果玩家按的是方向键,我们还要先判断前面是不是有"墙壁",如果有的话,就不能往前移动了.好的,我们在判断按键的switch语句的各个分支加上了判断语句,如下:if (map[…][…] == '#') break;/*如果前面是墙壁,就不执行下去*/哇噻!真棒,我们做出了一个完整的游戏了.当然你还可以通过修改二维数组map来修改迷宫的地图,让它更有挑战性.不过,我们要设计一个更好玩的游戏—— 5, 聪明的搬运工 大家一定玩过"搬运工"的游戏吧!这是在电脑和电子字典上较流行的益智游戏,让我们动手做一个属于自己的"搬运工"吧!程序依然用数组map来保存地图,数组元素如果为空格则表示什么也没有,'b'表示箱子,'#'表示墙壁,'*'表示目的地,'i'表示箱子在目的地.我们以后每推一下箱子,不但要改变屏幕的显示,也要改变map相应元素的值.游戏的主循环依然是接受按键.当接收一个方向键,需要判断小人前面一格的状态,如果是空地或目的地,则人物可以直接移动;如果是墙壁,则不可移动;如果是箱子或目的地上的箱子,则需要继续判断箱子前面一格的状态:如果前一格是空地或目的地,则人推箱子前进,否则不可移动.好的,我们在switch中增加了这些判断语句.程序还有一个重要的功能就是判断胜利.数组Des用来记录全部目的地的坐标,我们每执行一步操作后,程序就要通过Des数组判断这些目的地上是否都有箱子了.真棒啊!我们可以做游戏了.而且是一个老少皆宜,趣味十足的游戏呢!当然,我们可以通过修改map数组来制作不同的游戏地图,我们还可以相互分享好的游戏地图呢. 尾声: 在C++等高级语言还没出来的时候,很多应用程序也是C语言开发的.C语言在与硬件联系紧密的编程中,也占有重要地位.其实我觉得学习编程,可以通过一些小游戏,实用的例子来学习.象学习音乐的人,不是要等到把全部乐理学完后才演奏一个完。

7. 可以用C语言编写游戏吗

我对你提出的问题的题意的理解是编一个计算器程序。。。。。。。。。如果要是那样子的话我给出代码:

#include <stdio.h>

int main()

{

char cp;

int a, b;

scanf("%d %c %d", &a, &cp, &b);

if (cp == '-')printf("%d", a - b);

else if(cp == '+')printf("%d", a + b);

else if (cp == '*')printf("%d", a * b);

else if (cp == '%')printf("%d", a % b);

return 0;

}

如果要知道这几个符号在机器中的实现机理的话:

+和-不说了*就相当于多做几遍加法。而%是用位运算之类的方法进行运算的所以%的效率最低

不知道是不是你的编译器有问题我的程序运行起来是得15的

你是否正确输入了????

8. 怎么在C++上写文本游戏

文本游戏应该比较简单,就是一些输入输出命令。

建议你新建“Win32控制台程序”,然后用简单的cin和cout就可以完全实现,比如我给你写个简单的答题程序,希望能有所启发:

#include <iostream.h>

void main()

{

cout<<;"请答题: 1+2 = ?"<<endl;

cout<<;"答案: ";

char c;

cin>>c;

if ('3' == c)

{

cout<<;"答对了!"<<endl;

}

else

{

cout<<;"答错了,继续努力哟!"<<endl;

}

}