C游戏编程从入门到精通 c游戏编程

c编写小游戏过程游戏是一门艺术,而不仅仅是一个技术 。
首先,要有一套算法,也就是游戏的规则 。以搬箱子为例,只能向前推,不能向后拉,只能推动一个箱子,一个点只能放一个箱子,所有箱子推到点上算赢 。这就是一个规则 。
然后,就是控制代码 。我用什么来控制 。我相应键盘的上下左右4个键,还是aswd,按上是什么功能,按下又如何 。
在然后,就是显示 。用户看不到东西自然没法玩 。我用什么来显示?最简单的,我用TC做,用**来拼出地图的轮廓,用红色的o代表点,用黄色的方块代表箱子,用绿三角代表小人,地图用2位数组来表示,按下w,绿三角的坐标就向上一格,等等,就是把游戏进行的状态反映出来 。
如果水平够高,我用OPenGL或者更高级的技术来显示,在特定情况下播放什么声音,这样,同样一个搬箱子,就会比TC的更好玩 。
总之,游戏不单单是简单的编程,涉及到很多其他的东西比如音乐的搭配美工的帖图3D的模型还有一个好的故事背景等等等等 。靠团队的力量才能设计出好的游戏,不然只能叫做程序 。
本回答由提问者推荐
C游戏编程从入门到精通  c游戏编程
用C语言编写小游戏用c语言编写一个五子棋吧,不怎么难,给你程序,自己参考一下
/*3.3.4源程序*/
#include”graphics.h”/*图形系统头文件*/
#defineLEFT0x4b00/*光标左键值*/
#defineRIGHT0x4d00/*光标右键值*/
#defineDOWN0x5000/*光标下键值*/
#defineUP0x4800/*光标上键值*/
#defineESC0x011b/*ESC键值*/
#defineENTER0x1c0d/*回车键值*/
inta[8][8]={0},key,score1,score2;/*具体分数以及按键与存放棋子的变量*/
charplayone[3],playtwo[3];/*两个人的得分转换成字符串输出*/
voidplaytoplay(void);/*人人对战函数*/
voidDrawQp(void);/*画棋盘函数*/
voidSetPlayColor(intx);/*设置棋子第一次的颜色*/
voidMoveColor(intx,inty);/*恢复原来棋盘状态*/
intQpChange(intx,inty,intz);/*判断棋盘的变化*/
voidDoScore(void);/*处理分数*/
voidPrintScore(intn);/*输出成绩*/
voidplayWin(void);/*输出胜利者信息*/
/******主函数*********/
voidmain(void)
intgd=DETECT,gr;
initgraph(&gd,&gr,”c:\\tc”);/*初始化图形系统*/
DrawQp();/*画棋盘*/
playtoplay();/*人人对战*/
getch();
closegraph();/*关闭图形系统*/
voidDrawQp()/*画棋盘*/
inti,j;
score1=score2=0;/*棋手一开始得分都为0*/
setbkcolor(BLUE);
for(i=100;i<=420;i+=40)
line(100,i,420,i);/*画水平线*/
line(i,100,i,420);/*画垂直线*/
setcolor(0);/*取消圆周围的一圈东西*/
setfillstyle(SOLID_FILL,15);/*白色实体填充模式*/
fillellipse(500,200,15,15);/*在显示得分的位置画棋*/
setfillstyle(SOLID_FILL,8);/*黑色实体填充模式*/
fillellipse(500,300,15,15);
a[3][3]=a[4][4]=1;/*初始两个黑棋*/
a[3][4]=a[4][3]=2;/*初始两个白棋*/
setfillstyle(SOLID_FILL,WHITE);
fillellipse(120+3*40,120+3*40,15,15);
fillellipse(120+4*40,120+4*40,15,15);
setfillstyle(SOLID_FILL,8);
fillellipse(120+3*40,120+4*40,15,15);
fillellipse(120+4*40,120+3*40,15,15);
score1=score2=2;/*有棋后改变分数*/
DoScore();/*输出开始分数*/
voidplaytoplay()/*人人对战*/
intx,y,t=1,i,j,cc=0;
while(1)/*换棋手走棋*/
x=120,y=80;/*每次棋子一开始出来的坐标,x为行坐标,y为列坐标*/
while(1)/*具体一个棋手走棋的过程*/
PrintScore(1);/*输出棋手1的成绩*/
PrintScore(2);/*输出棋手2的成绩*/
SetPlayColor(t);/*t变量是用来判断棋手所执棋子的颜色*/

相关经验推荐