怎样用c写游戏机实用技术?

只需一步,快速开始
后使用快捷导航没有帐号?
查看: 3396|回复: 19
第一次用C语言做游戏(推箱子)
主题帖子积分
初级Geek, 积分 452, 距离下一级还需 349 积分
说实话,其实这个游戏没什么用,我研究研究罢了。程序:
玩法:0推着x到处走
不足:没有画出边界
有的变量是多余的,不要在意。
#include &stdio.h&
#include &stdlib.h&
int main() {
& & & & int x,y,fx,fy,kx=-1,ky=-1,n=0,m=0,xm=5,ym=5,xl=0,cx,
& & & & int a=0;
& & & & char aj,l;
& & & & char huizhi[10][10];
& & & & int d[10];
& & & & kx=-1;
& & & & ky=-1;
& & & & & & & & for(x=0;x&=9;x++)
& & & & & & & & {
& & & & & & & & & & & & for(y=0;y&=9;y++)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & huizhi[x][y]=' ';
& & & & & & & & & & & & }
& & & & & & & & }
& & & & while(1)
& & & & for(a=0;a&=9;a++)
& & & & & & & & if(huizhi[9][a]==' ')
& & & & & & & & {
& & & & & & & & }
& & & & & & & & huizhi[xm][ym]='x';
& & & & & & & & aj=getch();
& & & & & & & & system(&cls&);
& & & & & & & & if(aj=='s')
& & & & & & & & {
& & & & & & & & & & & & n++;
& & & & & & & & & & & & m++;
& & & & & & & & & & & & if(n==1)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & ky++;
& & & & & & & & & & & & }
& & & & & & & & & & & & kx++;
& & & & & & & & & & & & if(kx==10) kx=9;
& & & & & & & & & & & & if(huizhi[kx][ky]=='x')
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & xm++;
& & & & & & & & & & & & & & & & if(xm&9)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & kx=8;
& & & & & & & & & & & & & & & & xm=9;
& & & & & & & & & & & && &&&}
& & & & & & & & & & & & & & & & huizhi[xm][ym]='x';
& & & & & & & & & & & & & & & & huizhi[xm-1][ym]=' ';
& & & & & & & & & & & & }
& & & & & & & & & & & & huizhi[kx][ky]='0';
& & & & & & & & & & & & huizhi[kx-1][ky]=' ';
& & & & & & & & }
& & & & & & & & if(aj=='d')
& & & & & & & & {
& & & & & & & & & & & & m++;
& & & & & & & & & & & & n++;
& & & & & & & & & & & & if(m==1)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & kx++;
& & & & & & & & & & & & }
& & & & & & & & & & & & ky++;
& & & & & & & & & & & & if(ky==10) ky=9;
& & & & & & & & & & & & if(huizhi[kx][ky]=='x')
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & ym++;
& & & & & & & & & & & & & & & & if(ym&9)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & ym=9;
& & & & & & & & & & & & & & & & & & & & ky=8;
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & huizhi[xm][ym]='x';
& & & & & & & & & & & & & & & & huizhi[xm][ym-1]=' ';
& & & & & & & & & & & & }
& & & & & & & & & & & & huizhi[kx][ky]='0';
& & & & & & & & & & & & huizhi[kx][ky-1]=' ';
& & & & & & & & }
& & & & & & & & if(aj=='w')
& & & & & & & & {
& & & & & & & & & & & & kx--;
& & & & & & & & & & & & if(kx&0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & kx=0;
& & & & & & & && &&&}
& & & & & & & && &&&& & & & if(huizhi[kx][ky]=='x')
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & xm--;
& & & & & & & & & & & & & & & & if(xm&0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & xm=0;
& & & & & & & & & & & & & & & & & & & & kx=1;
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & huizhi[xm][ym]='x';
& & & & & & & & & & & & & & & & huizhi[xm+1][ym]=' ';
& & & & & & & & & & & & }
& & & & & & & & & & & & huizhi[kx][ky]='0';
& & & & & & & & & & & & huizhi[kx+1][ky]=' ';
& & & & & & & & }
& & & & & & & & if(aj=='a')
& & & & & & & & {
& & & & & & & & & & & & ky--;
& & & & & & & & & & & & if(ky&0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & ky=0;
& & & & & & & & & & & & }
& & & & & & & & & & & & if(ky==10) ky=0;
& & & & & & & & & & & & if(huizhi[kx][ky]=='x')
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & ym--;
& & & & & & & & & & & & & & & & if(ym&0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & ky=1;
& & & & & & & & & & & & & & & & ym=0;
& & & & & & & & & & & && &&&}
& & & & & & & & & & & & & & & & huizhi[xm][ym]='x';
& & & & & & & & & & & & & & & & huizhi[xm][ym+1]=' ';
& & & & & & & & & & & & }
& & & & & & & & & & & & huizhi[kx][ky]='0';
& & & & & & & & & & & & huizhi[kx][ky+1]=' ';
& & & & & & & & }
& & & & & & & & for(fx=0;fx&=9;fx++)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & for(fy=0;fy&=9;fy++)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & printf(&%c&,huizhi[fx][fy]);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & printf(&\n&);
& & & & & & & & & & & & }
& & & & return 0;
无标题.png (47.01 KB, 下载次数: 6)
17:08 上传
无标题.png (49.91 KB, 下载次数: 3)
17:09 上传
无标题.png (46.15 KB, 下载次数: 3)
17:12 上传
无标题.png (36.21 KB, 下载次数: 3)
17:13 上传
希望大家给出改进建议,谢谢。
主题帖子积分
代码有些繁琐,希望有大神给出修改建议
主题帖子积分
C语言。。。。都忘光了
主题帖子积分
C语言。。。。都忘光了
学校要拿这个去参加竞赛,于是重拾C语言,写了这个东西,回忆回忆C语言.....
主题帖子积分
跟单片机的c语言非常相似。
主题帖子积分
跟单片机的c语言非常相似。
主题帖子积分
只不过我不会电脑的函数,也不知道用什么软件开发,电脑程序只会易语言。
主题帖子积分
7.exe - 1error(s),0 warning(s)
151141tfui11179zjfqrmf.jpg (34.75 KB, 下载次数: 3)
15:11 上传
主题帖子积分
7.exe - 1error(s),0 warning(s)
大哥,这不是单片机程序................
学过电脑编程么??
主题帖子积分
范腊英 发表于
大哥,这不是单片机程序................
学过电脑编程么??
我用C++编译的,不是C语言吗
主题帖子积分
我用C++编译的,不是C语言吗
这是c语言..............不是C++,你分的清么?????
主题帖子积分
请问程序是你自己写的吗?
主题帖子积分
请问程序是你自己写的吗?
是& && && && && && &
主题帖子积分
范腊英 发表于
厉害,你觉得难吗
主题帖子积分
厉害,你觉得难吗
不难& && && && && && &
主题帖子积分
范腊英 发表于
你能教我吗
主题帖子积分
这个代码太繁琐了,我用unity做过一个,有很多道具什么的,用这个引擎作做很方便,碰撞什么的都有。
主题帖子积分
这个怎么能运行呢?
主题帖子积分
主题帖子积分
啊,对啦,c语言这么好,推荐你去学unity哟,支持c&&java(我在用)& &boo语言,不止做游戏非常屌,其他应用软件也很牛的,&&(这个有些要付费,不过讲的很好)& && & (这个不用付费,但是讲的很少)
All Rights Reserved2008年10月 专题开发/技术/项目大版内专家分月排行榜第三
2010年9月 专题开发/技术/项目大版内专家分月排行榜第三2010年7月 专题开发/技术/项目大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 10156 人关注过本帖
标题:【教程】c语言怎么编游戏
等 级:新手上路
帖 子:145
&&问题点数:0&&回复次数:10&&&
【教程】c语言怎么编游戏
纯真童趣的《泡泡堂》,还有武林情仇,笑傲江湖的《剑侠情缘on
line》.它是e时代常谈的话题,是交互式娱乐的主力军,是一种
高层次的综合艺术,更是一个民族的文化,世界观的全新传播方式
.作为游戏玩家的我们,是不是想设计一个属于自己的游戏呢?
爱玩是人的天性,而C语言是我们计算机专业都要学习的一门基础
学科.一般来说,是比较枯燥的.那么,我们能不能通过编一些小
游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦
,枯燥的事,它变得象电脑游戏一样充满好奇,富有乐趣.这正是
我发贴的目的.
<font color=#,&&总是从Hello,world开始
学习编程的第一个程序,一般就是打印一个亲切的词语——&Hell
o,world!&.让我们来看看这个最简单的C程序:
#incolude &stdio.h& /*把输入输出函数的头文件包含进来*/
int main()
printf(&Hello,&&
world!&);/*在屏幕上输出字符串&Hello,world!&*/
return <font color=#;/*退出main函数,并返回0*/
下面我们发现几个值得改进的地方,<font color=#,程序的运行结果一闪而过
.<font color=#,每执行这个程序一次都能看见上次运行留下的字符.<font color=#,我们
还希望屏幕输出一个笑脸来欢迎我们.(大家不要小看了这个笑脸
曾经有人发贴专门问呢)让我们来改进一下这个程序吧!
<font color=#,在return语句的前面加一句:getch ();,表示按任意键结
束.<font color=#,在printf语句前用clrscr函数清屏,要使用这个函数和get
ch函数,需要在程序开头再包含头文件conio.h.<font color=#,ASCII码也有
许多非常好玩的字符,比如ASCII码值为<font color=#的就是一个笑脸,我们可
以用printf(&%c&, <font color=#)来输出一个笑脸.
现在我们把Hello,world程序改成一个更好看的Hello,world了.下
面让我们开始做游戏吧!
<font color=#,&&心动的开始,一个运动中的笑脸
大家小时侯喜欢看动画片吗?哈哈,我猜你们都喜欢吧!下面就让
我们来做一个小动画吧.在屏幕上显示一个运动的小笑脸,而且当
它到达屏幕的边缘时会自动弹回来.
先在程序定义一个在屏幕中运动的点的结构:
struct move_point
&&&&&&&&int x,/*该点的位置,包括x坐标和y坐标*/
&&&&&&&&int xv,/*该点在x轴,y轴的速度*/
运动的原理是,先擦去物体先前的轨迹,让物体按其速度移动一段
距离,再画出该物体.让我们看到以下代码:
gotoxy(man.x, man.y);/*把光标移到指定的坐标*/
printf(& &);/*输出一个空格,把先前的字符擦去*/
然后我们让物体按其速度运动:
man.x += man./*水平方向按x轴的速度运动*/
man.y += man./*垂直方向按y轴的速度运动*/
运动后还要判断物体是否出界,如果出了界,就令物体反弹,即让
它下一刻的速度等于现在的速度的相反数.最后打印出这个笑脸:
gotoxy(man.x, man.y);
printf(&%c\b&, <font color=#); /*输出ASCII码值为2的&笑脸&字符*/
怎么样?是不是很有趣呢?不过这个笑脸一直是自己运动,能不能
让我们来控制它运动呢?答案是肯定的,让我们继续往下学吧!
<font color=#,&&交互的实现——让我们来控制笑脸运动
这个程序的主要功能是接受按键,如果接收的是方向键,就让笑脸
顺着方向移动,如果接收的是ESC键就退出程序,其他按键则忽略
处理.接受按键我们用以下两条语句:
while (bioskey(<font color=#) == <font color=#);/*等待按键*/
key = bioskey(<font color=#);/*把接收的按键的键盘码赋给变量key*/
然后用switch语句来判断按键以及执行相关操作,如下:
switch (key) /*对变量key的值进行判断*/
case UP:&&& /*如果按的是向上键*/
&&&&&&&&… break; /*让物体向上运动,并退出switch*/
case DOWN: /*如果按的是向下键*/
&&&&&&&&… break; /*让物体向下运动,并退出switch*/
case LEFT:&&/*向左键*/
&&&&&&&&… break;;/*向左运动*/
case RIGHT: /*向右键*/
&&&&&&&&… break;/*向右运动*/
&&&&&&&&break;/*其他按键则忽略处理*/
怎么样,是不是有了玩游戏的感觉了?不过这个程序没有什么目的
,也没有什么判断胜负的条件.下面我们就利用这个能控制它移动
的笑脸来做一个更有趣的游戏吧!
<font color=#,&&在迷宫中探索
小时侯,我常在一些小人书和杂志上看见一些迷宫的游戏,非常喜
欢玩,还常到一些书上找迷宫玩呢.好的,现在我们用C语言来编
个迷宫的游戏,重温一下童年的乐趣.
首先,我们定义一个二维数组map,用它来保存迷宫的地图,其中m
ap[x][y] == '#'表示在(x,y)坐标上的点是墙壁.DrawMap函数
在屏幕上输出迷宫的地图和一些欢迎信息.
在main函数里,我们定义了&小人&man的坐标和&目的地&des的
坐标.在游戏循环中,我们增加了一些用来判断胜负的语句:
if (man.x == des.x && man.y == des.y) /*如果人的坐标等于目
的地的坐标*/
&&&&&&&&gotoxy(<font color=#, <font color=#);
&&&&&&&&printf(&Ok! You win!&); /*输出胜利信息*/
在判断按键时,如果玩家按的是方向键,我们还要先判断前面是不
是有&墙壁&,如果有的话,就不能往前移动了.好的,我们在判
断按键的switch语句的各个分支加上了判断语句,如下:
if (map[…][…] == '#') break;/*如果前面是墙壁,就不执行
哇噻!真棒,我们做出了一个完整的游戏了.当然你还可以通过修
改二维数组map来修改迷宫的地图,让它更有挑战性.不过,我们
要设计一个更好玩的游戏——
<font color=#,&&聪明的搬运工
大家一定玩过&搬运工&的游戏吧!这是在电脑和电子字典上较流
行的益智游戏,让我们动手做一个属于自己的&搬运工&吧!
程序依然用数组map来保存地图,数组元素如果为空格则表示什么
也没有,'b'表示箱子,'#'表示墙壁,'*'表示目的地,'i
'表示箱子在目的地.我们以后每推一下箱子,不但要改变屏幕的
显示,也要改变map相应元素的值.
游戏的主循环依然是接受按键.当接收一个方向键,需要判断小人
前面一格的状态,如果是空地或目的地,则人物可以直接移动;如
果是墙壁,则不可移动;如果是箱子或目的地上的箱子,则需要继
续判断箱子前面一格的状态:如果前一格是空地或目的地,则人推
箱子前进,否则不可移动.好的,我们在switch中增加了这些判断
程序还有一个重要的功能就是判断胜利.数组Des用来记录全部目
的地的坐标,我们每执行一步操作后,程序就要通过Des数组判断
这些目的地上是否都有箱子了.
真棒啊!我们可以做游戏了.而且是一个老少皆宜,趣味十足的游
戏呢!当然,我们可以通过修改map数组来制作不同的游戏地图,
我们还可以相互分享好的游戏地图呢.
在C++等高级语言还没出来的时候,很多应用程序也是C语言开发的
.C语言在与硬件联系紧密的编程中,也占有重要地位.
其实我觉得学习编程,可以通过一些小游戏,实用的例子来学习.
象学习音乐的人,不是要等到把全部乐理学完后才演奏一个完整的
曲子.而是刚开始学时就有一些简单的曲子让你演奏,让你立刻就
有成就感,让你很快就能卖弄出来在别人面前表现自己了.通过编
游戏来学习编程,把学习变成游戏,不失为学习计算机的一种好方
好了,编游戏就这么简单,希望大家也尝试用C语言或其他的语言
来做几个自己喜欢的小游戏.
搜索更多相关主题的帖子:
等 级:论坛游民
帖 子:259
专家分:55
不错的东西,对于我这样的初学者算是给了一些思路
一切从爱C开始
回复 1# fish7fish7 的帖子
提示: 作者被禁止或删除 内容自动屏蔽
来 自:武汉
等 级:新手上路
帖 子:24
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
额,这个也叫游戏?
建议你看看Ogre游戏引擎:www.ogre3d.org
和Irrlicht游戏引擎:irrlicht.sourceforge.net
NEO游戏引擎:www.neoengine.org
Delta3D引擎:www.delta3d.org
Crazy Eddie's GUI系统(游戏界面系统):www.cegui.org.uk/wiki/index.php/Main_Page
天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
来 自:水星
等 级:ID已被封
帖 子:1867
[bo][un]flyue[/un] 在
14:19 的发言:[/bo]
额,这个也叫游戏?
建议你看看Ogre游戏引擎:www.ogre3d.org
和Irrlicht游戏引擎:irrlicht.sourceforge.net
NEO游戏引擎:www.neoengine.org
Delta3D引擎:www.delta3d.org
Crazy Eddie's GUI系统(游戏界面 ...
游戏中最低级的
爱上你 是 我的错&&可是离 开&&又舍不得&&听着你为我写的歌&&&&&好难过
如果说 我说如果&&我们还 能&&重新来过&&&不去计 较 谁对谁错&&会怎么做
来 自:水星
等 级:ID已被封
帖 子:1867
现在人真都神的着
爱上你 是 我的错&&可是离 开&&又舍不得&&听着你为我写的歌&&&&&好难过
如果说 我说如果&&我们还 能&&重新来过&&&不去计 较 谁对谁错&&会怎么做
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
我以上提供的连接都是免费开源的游戏引擎代码
游戏引擎的好处在哪里?——你不需要添加多少代码,就能做出很眩的效果——前提是你有好的3D模型和好的游戏音乐
——国内许多网游和单机游戏,都用了国外的游戏引擎。如《仙剑奇侠传4》《轩辕剑》等一些大宇、软星的游戏都是用的“RenderWare”游戏引擎,网游《天龙八部》用的是“Ogre3D”游戏引擎(http://www.ogre3d.org/phpBB2/viewtopic.php?t=33891&view=next&sid=ced3d7c4af509e6f4e2718c6)
天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
等 级:新手上路
你这里的man.x +=man.为什么要用这个加号,这个加号有代表什么呢?新手上路,谢谢哈
等 级:新手上路
还能这样玩啊,对我很有用&&& 顶!!!!
版权所有,并保留所有权利。
Powered by , Processed in 0.032011 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved&&/&&&&/&&&&/&&
50个比较经典的C语言代码分享给大家,我都加了注释和解析。学习编程,只了解基本概念是不行的,关键是要写出高质量的代码,才能成为合格的农民(程序猿又叫码农,我一直称自己是农民^_^)。这些代码,能够加强你的练习,看看真正的农民是怎么种地的。
记住哦,不要觉得码农拿几十万的年薪不公平,想做农民,就要不断耕耘,一直一直敲代码,编程能力跟你的代码量绝对成正比。所以,请大家不要再问我,怎么学,学多久,我的答案就是不断写代码,写多了,棒槌也能开窍,做农民的都是这样过来的,没有捷径。
文章列表:}

我要回帖

更多关于 写游戏脚本用什么软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信