注册 登录
编程论坛 C图形专区

[原创制作坦克游戏方法总结适合新手

奔跑的鸟 发布于 2007-02-18 10:13, 8265 次点击

附件内容是c语言示例(包括贪吃蛇等)来自本论坛,只是忘了再哪里找的就重发了下,希望斑竹不要认为我是重法贴


通过制作这个坦克游戏,我初步掌握了一些小游戏的制作方法,现在总结如下:
1要学好c语言的基本语言,了解基本算法和流程控制;
2学会绘制基本图形;图型模式的启动请参阅该版斑竹置顶贴《给我一个点我能勾

画全世界》,基本图形的函数可以多参阅其他程序,我在这里只提几个最基本

的函数:
1)矩形:rectangle(int x,int y,int ex,int ey);
其中x是起始点横坐标,y是起始点纵坐标,ex是终止点横坐标,ey 是终止点纵坐标;
2)圆 :circle(int x,int y,int r);
x,y是圆心坐标,r是半径;
3)设置背景色: setbkcolor(int c);
c 是你想设置的颜色,详细内容参阅该版斑竹置顶贴《函数查阅器 》;
3这些你都掌握后就可以进行你第一个游戏的尝试了;
1)首先你要了解自己c语言掌握情况,构思符合实际的游戏构想,可以稍稍超 越自己的水平,但是要清楚技术瓶茎在哪里;
2)多看看其他人的程序,找到解决或绕过瓶颈的方法;
3)制作游戏具体过程(我以坦克为例):
(1)分割屏幕:就是设定好游戏范围,和用方格将屏幕分割,这样方便
定位你的图形位置,我是绘制了一个表格函数放到了
include文件夹里,你可以直接把代码放到程序里也可以;
(2)绘画静态图形:以你的网格为标准,绘制你的游戏主人公,我的就
是绘制坦克,具体方法请参阅我的原代码中
void tank (int x,int y,int c)函数,
还有炮弹函数和爆炸函数;
(3)让你的图形动起来:
A 我是先编辑我控制的坦克:
a用到了键盘控制:
具体做法是先定义你要用的键位,如坦克开头
定义的那几行#define,后面的值是与键一对一对应的,如:
up 0x4800 down 0x5000 left 0x4b00
right 0x4d00 esc 0x011b 等等 ;
b根据输入的键,改变主人公(坦克)的坐标,
参阅原程序主函数结尾部分;
c循环根据坐标绘制主人公(坦克);
B 让对方的坦克动起来:
a只是把键盘控制用随机数控制代替,我用
random()函数产生4个随机数,依次代替4个按键;
b,c和上述的A样;
(4)同步动作:把所有的东西放在一个大循环当中,每循环依次就改变
一次坐标,并根据新坐标绘图,这里我要强调keyhit()
函数的重要性,具体用法请参阅附件中的贪吃蛇例子;
至次,你的游戏就应该初步成型了,之后的工作不过是怎么完善他装饰他,这个

要根据个人的喜好自己搞定了;
因为我也是新手,所以我的总结难免有不对的地方,还请各位高手多多指点,我

写这片文章也只是想帮一把和我样想做游戏但还没有走到我这步的同道中人;

只有本站会员才能查看附件,请 登录

[此贴子已经被作者于2007-2-18 13:04:48编辑过]

26 回复
#2
一笔苍穹2007-02-18 16:23
呵呵,支持一个。祝大家新年快乐,心想事成!
#3
田里兵蜂2007-03-04 20:33

不错,顶一个

#4
moonwalker2007-03-05 23:34

收藏,有空学学

#5
I喜欢c2007-03-09 21:58
支持哈!
#6
亚瑟king2007-03-20 21:47
#7
wujinwen2007-04-04 13:39
     太好了    本人找了很久  才找到   这样的东西!
#8
tvkl2007-04-12 11:48

总结很好。
谢谢楼主的奉献!

#9
梦承成2007-04-18 09:26
这是一本书中的源代码
#10
hbsoft20082007-04-19 17:43

来 ,顶一个
#11
TFTFTTFF2007-05-03 18:46

我是刚接触C语言的新手,请问一下为什么我打开了上面传的文件,却显示错误?
BGI ERROR:Graphics not initialized <use 'initgraph'>
怎么才能解决呢?

#12
奔跑的鸟2007-05-03 19:13
initgraph(&amp;gd,&amp;gm,"c:\\tc");这句应该把“c:\\tc”路径改为你电脑里的路径
#13
TFTFTTFF2007-05-03 19:21

我试试,先谢谢了.

#14
dx28802007-05-24 19:03
顶了,下下来学习一下
#15
wangwang1682007-05-25 12:22
我对楼主的感激之情犹如滔滔江水连绵不决啊
#16
peswe2007-05-28 16:12
好东西
#17
lucis0092007-07-23 04:49
(4)同步动作:把所有的东西放在一个大循环当中,每循环依次就改变
一次坐标,并根据新坐标绘图,这里我要强调keyhit()
函数的重要性,具体用法请参阅附件中的贪吃蛇例子;

这里不是很明白,你要现按键的话你就要用到等待按键函数,在等待按键中,敌机没动画效果
#18
anlogo2007-07-23 11:13
顶一下,还是那句LZ太厉害了
#19
岳C2007-07-23 18:55
提示: 作者被禁止或删除 内容自动屏蔽,只有管理员可见
#20
奔跑的鸟2007-07-25 00:42
关于keyhit()函数,你还是去看贪食蛇的程序吧,他是有按键输入就跳出循环,这个等待是不影响程序进行的
#21
pklpklong0072007-09-11 22:04
支持啊,希望有一天我也能做出这种水平的游戏来。
#22
leisure19802007-09-12 01:20
拿下来研究研究
#23
eakcon2007-11-14 10:13

好强呀!


此主题相关图片如下:

#24
winnerwxin2008-04-07 18:26
楼主又这个心真是太好了~~
#25
qq12010-05-05 22:15
顶起!!!
#26
lakyno2011-06-26 12:00
顶起
#27
好男人帮小天2012-12-03 21:49
谢谢!!~~
1