#include<stdio.h>
#include<windows.h>//基本型态定义。支援型态定义函数。使用者界面函数图形装置界面函数。
#include<conio.h>
//用户通过按键盘产生的对应操作(控制台)
#include<stdlib.h>
#include<time.h>//日期和时间头文件
#defineLEN30
#defineWID25
intSnake[LEN][WID]={0};
//数组的元素代表蛇的各个部位
charSna_Hea_Dir=’a’;//记录蛇头的移动方向
intSna_Hea_X,Sna_Hea_Y;//记录蛇头的位置
intSnake_Len=3;//记录蛇的长度
clock_tNow_Time;//记录当前时间,以便自动移动
intWait_Time;//记录自动移动的时间间隔
intEat_Apple=1;//吃到苹果表示为1
intLevel;
intAll_Score=-1;
intApple_Num=-1;
HANDLEhConsole=GetStdHandle(STD_OUTPUT_HANDLE);
//获取标准输出的句柄<windows.h>
//句柄:标志应用程序中的不同对象和同类对象中的不同的实例方便操控,
voidgotoxy(intx,inty)//设置光标位置
{
COORDpos={x,y};
//定义一个字符在控制台屏幕上的坐标POS
SetConsoleCursorPosition(hConsole,pos);
//定位光标位置的函数<windows.h>
}
voidHide_Cursor()//隐藏光标固定函数
{
CONSOLE_CURSOR_INFOcursor_info={1,0};
SetConsoleCursorInfo(hConsole,&cursor_info);
}
voidSetColor(intcolor)//设置颜色
{
SetConsoleTextAttribute(hConsole,color);
//是API设置字体颜色和背景色的函数格式:SetConsoleTextAttribute(句柄,颜色);
}
voidPrint_Snake()//打印蛇头和蛇的脖子和蛇尾
{
intiy,ix,color;
for(iy=0;iy<WID;++iy)
for(ix=0;ix<LEN;++ix)
{
if(Snake[ix][iy]==1)//蛇头
{
SetColor(0xf);//oxf代表分配的内存地址setcolor:34行自定义设置颜色的函数
gotoxy(ix*2,iy);
printf(“※”);
}
if(Snake[ix][iy]==2)//蛇的脖子
{
color=rand()%15+1;
//rand()函数是产生随机数的一个随机函数。C语言里还有srand()函数等。
//头文件:stdlib.h
if(color==14)
color-=rand()%13+1;
//变色
SetColor(color);
gotoxy(ix*2,iy);
printf(“■”);
}
if(Snake[ix][iy]==Snake_Len)
{
gotoxy(ix*2,iy);
SetColor(0xe);
printf(“≈”);
}
}
}
voidClear_Snake()//擦除贪吃蛇
{
intiy,ix;
for(iy=0;iy<WID;++iy)
for(ix=0;ix<LEN;++ix)
{
gotoxy(ix*2,iy);
if(Snake[ix][iy]==Snake_Len)
printf(“”);
}
}
voidRand_Apple()//随机产生苹果
{
intix,iy;
do
{
ix=rand()%LEN;
iy=rand()%WID;
}while(Snake[ix][iy]);
Snake[ix][iy]=-1;
gotoxy(ix*2,iy);
printf(“⊙”);
Eat_Apple=0;
}
voidGame_Over()//蛇死掉了
{
gotoxy(30,10);
printf(“GameOver”);
Sleep(3000);
system(“pause>nul”);
exit(0);
}
voidMove_Snake()//让蛇动起来
{
intix,iy;
for(ix=0;ix<LEN;++ix)//先标记蛇头
for(iy=0;iy<WID;++iy)
if(Snake[ix][iy]==1)
{
switch(Sna_Hea_Dir)//根据新的蛇头方向标志蛇头
{
case’w’:
if(iy==0)
Game_Over();
else
Sna_Hea_Y=iy-1;
Sna_Hea_X=ix;
break;
case’s’:
if(iy==(WID-1))
Game_Over();
else
Sna_Hea_Y=iy+1;
Sna_Hea_X=ix;
break;
case’a’:
if(ix==0)
Game_Over();
else
Sna_Hea_X=ix-1;
Sna_Hea_Y=iy;
break;
case’d’:
if(ix==(LEN-1))
Game_Over();
else
Sna_Hea_X=ix+1;
Sna_Hea_Y=iy;
break;
default:
break;
}
}
if(Snake[Sna_Hea_X][Sna_Hea_Y]!=1&&Snake[Sna_Hea_X][Sna_Hea_Y]!=0&&Snake[Sna_Hea_X][Sna_Hea_Y]!=-1)
Game_Over();
if(Snake[Sna_Hea_X][Sna_Hea_Y]<0)//吃到苹果
{
++Snake_Len;
Eat_Apple=1;
}
for(ix=0;ix<LEN;++ix)//处理蛇尾
for(iy=0;iy<WID;++iy)
{
if(Snake[ix][iy]>0)
{
if(Snake[ix][iy]!=Snake_Len)
Snake[ix][iy]+=1;
else
Snake[ix][iy]=0;
}
}
Snake[Sna_Hea_X][Sna_Hea_Y]=1;//处理蛇头
}
voidGet_Input()//控制蛇的移动方向
{
if(kbhit())
{
switch(getch())
{
case87:
Sna_Hea_Dir=’w’;
break;
case83:
Sna_Hea_Dir=’s’;
break;
case65:
Sna_Hea_Dir=’a’;
break;
case68:
Sna_Hea_Dir=’d’;
break;
default:
break;
}
}
if(clock()-Now_Time>=Wait_Time)//蛇到时间自动行走
{
Clear_Snake();
Move_Snake();
Print_Snake();
Now_Time=clock();
}
}
voidInit()//初始化
{
system(“title贪吃毛毛蛇”);
system(“modecon:cols=80lines=25”);
Hide_Cursor();
gotoxy(61,4);
printf(“YouScore:”);
gotoxy(61,6);
printf(“YouLevel:”);
gotoxy(61,8);
printf(“TheLenght:”);
gotoxy(61,10);
printf(“TheSpeed:”);
gotoxy(61,12);
printf(“AppleNum:”);
inti;
for(i=0;i<Snake_Len;++i)//生成蛇
Snake[10+i][15]=i+1;
intiy,ix;//打印蛇
for(iy=0;iy<WID;++iy)
for(ix=0;ix<LEN;++ix)
{
if(Snake[ix][iy])
{
SetColor(Snake[ix][iy]);
gotoxy(ix*2,iy);
printf(“■”);
}
}
}
voidPri_News()//打印信息
{
SetColor(0xe);
gotoxy(73,4);
All_Score+=Level;
printf(“%3d”,All_Score);
gotoxy(73,6);
printf(“%3d”,Level);
gotoxy(73,8);
printf(“%3d”,Snake_Len);
gotoxy(73,10);
printf(“0.%3ds”,Wait_Time/10);
gotoxy(73,12);
printf(“%d”,Apple_Num);
}
voidLev_Sys()//等级系统
{
if(((Apple_Num-1)/10)==Level)
{
++Level;
if(Wait_Time>50)
Wait_Time-=50;
else
if(Wait_Time>10)
Wait_Time-=10;
else
Wait_Time-=1;
}
}
intmain(void)
{
Init();
srand((unsigned)time(NULL));//设置随机数的种子
Now_Time=clock();
intspeed1=1000,speed2,a;
printf(“\n”);
printf(“请输入你想要的速度\n”);
scanf(“%d”,&speed2);
Level=1;
Wait_Time=speed1-speed2;
printf(“请输入你想要的苹果数\n”);
scanf(“%d”,&a);
while(a–)
Rand_Apple();
while(1)
{
if(Eat_Apple)
{
++Apple_Num;
Rand_Apple();
Lev_Sys();
Pri_News();
}
Get_Input();
Sleep(10);
}
return0;
}
C语言编写要求?
代码编写规则应该在建立一个工程项目之前,应该贯穿整个项目的始终,以保证代码的一致性。采用标准的代码编写惯例,可以大大简化项目的维护负担。采用一种好的风格,以达到以下目的:可移植性、连贯、整洁、易于维护、易于理解、简洁。
制定标准的基本目的是加强代码的可维护性。也就是说代码必须易于阅读、易于理解、易于测试、易于移植。保持代码的简单清晰,不要在语言中使用晦涩难懂的表达,直接表明你的思想。保持一致性,尽可能使用同样的规则,避免使用复杂语句,一个语句若有太多的决策点将会使代码难于理解,尤其是对于测试。一旦修改已存在的代码,就要随时更新相关文档。
游戏编程是不是一般都是用C语言或C?
看了楼上很多人都说unity用c#,ue用c++,这样其实是错的,这两个引擎都是用的c++编写,然后增加了脚本支持,u3d用c#,ue用自己的脚本而已。但是两个引擎你要上c++也没问题。
现代软件开发,包括游戏,都很少使用单一语言开发的,例如你看魔兽世界,好庞大的游戏,他用纯c++开发的话,可能还要跳票,编译语言开发业务的效率,真的没办法和脚本语言相比,只要你的游戏核心部分,语需要强大的计算效率部分都用c或者c++写好,脚本调用就好了,无论是python还是lua,js,c#都可以用,普通业务效率基本没区别。
总结一下就是,需要高效率运算的部分,就用c/c++,例如渲染。
游戏玩法部分,就用脚本语言就行了。
现在一般的游戏或者软件都用什么语言编程?
这里有两个问题,一个是C和C++的区别和联系,而是如何进行应用软件开发。
C++比C语言更复杂,也完全兼容C的语法,不仅提供了面向对象的特性,还加入了模版元编程,直接把复杂度提升了一个档次。但也别有畏难情绪,C++的基本语法都很简单,包括模版,主要是看熟练程度,有些东西也不用刻意去学,包括一些语法糖,实际项目中很少用到,所以那些说C++怎么怎么复杂,怎么怎么难学的,听听就好别当真,可以说只要掌握面向对象,了解基本的模版编程,熟练使用stl或boost(里面的东西不需要全掌握,只掌握重点的容器、算法,boost的asio就可以了),就可以开始工作了。
软件开发这个话题太广,如果你熟悉了C/C++,到了这个阶段,就可以熟悉各种API了,如win32或posix等,比如可以看Windows程序设计或Linux程序设计等这类书籍。
就目前来看C\C++的路的确越来越窄,桌面开发可以选择Qt,但是windows还是推荐使用.net,C++仅作为备选方案,随着互联网和云计算的盛行,C++在这方面基本没什么用武之地,本来以为可以在物联网上大展宏图,结果半路杀出一个python,随后连Ubuntu都将其作为官方开发语言,这也是一个悲伤的故事。
但对于嵌入式工程师,C/C++这个目前还无法替代,而且门槛极高,要熟悉Linux架构,会对内核进行裁剪,要为特定硬件编写驱动,需要丰富的软硬件知识积累。
游戏目前主流的编程语言是C#,各大主流的商业游戏引擎,如unity,cryengine等都使用C#,目前只有unreal4采用的C++,当然unreal4也可以采用蓝图。像前几年盛行的cocos2dx也是采用C++,但目前基本已经淘汰了。
游戏编程对数学能力要求较高,首先需要掌握高等数学和线性代数等理论知识,然后看一些计算机图形学的相关知识,伴随着这些理论知识的学习掌握相关的图形api,比如OpenGL或directx,如果是从事移动端,需要学习opengl es,而OpenGL es是在OpenGL上精简而来的,抛离了OpenGL中的固定功能管线,采用可编程管线,即shader(shader是一种类c语言,语法很简单,但需要一定的数学功底才能写好),所以要重点学习OpenGL 3.0以上的版本。在这之后就可以开始学习游戏引擎了,有了上面的知识,游戏引擎就想对简单了,就相当于使用ide。
如何用c语言编程?
#include “stdio.h” #define N 10 void main() { int i,j,sum=0,SUM=0; for(i=1;i<N+1;i++) { for(j=1;j<i+1;j++) { sum+=j; } SUM+=sum; sum=0