设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 9382|回复: 13
打印 上一主题 下一主题

[原创发布] 手把手教你用C语言制作飞机游戏 01

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
152 小时
注册时间
2007-8-17
帖子
67
跳转到指定楼层
1
发表于 2011-10-11 21:13:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 碧俐千仞 于 2011-10-11 21:16 编辑

        自小而始,同学们梦想着制作游戏,要以此改变世界、影响他人。到了大学终于如愿以偿、有更多的机会接触C语言。可同学们发现课程学习和理想中的不大一样,有时枯燥乏味不知所图。本文以饶绍萍同学一篇项目报告为基础,试图以初学者的角度手把手地讲明用C语言制作飞机游戏方法,并希望以此为突破口,一发不可收拾。
飞机游戏历史悠久,像19XX,雷电当年风靡一时。愿同学们由此创造经典,震撼世界。
第一步:绘制主飞机
         巧妇不能无米之炊,人类的文明也是工具的文明。Win-Tc就是不错的工具,Google搜索WinTc即可下载。
         人类永远童心未泯,见神奇事物必探索其究竟。双击图标既可打开,人生白纸展示眼前。
    有些人的人生不是从空白开始,也许在你的界面中,空白处会有默认的程序,这时你可以点击“编译链接并运行”按钮( )查看效果。
C语言的最基本结构如下:

#include <stdio.h>
  
void main()
  
{
  
}


其中的void main(){}是一个函数的定义,表示建立一个名字叫main的函数。其他函数的格式也类似。c语言默认启动位置为main函数,也就是说当程序启动后就会运行括号里的程序。#include<stdio.h>是预处理语句,其实是表示这个文件中包含了stdio.h这个内置文件,它了printf等函数。

C语言最基本的“语句”可以算是printf,正如孩童呱呱坠地后能说的第一句话是“妈妈”,基本所有人接触C语言后用的第一个语句就是它。它的格式是printf("要显示的内容");功能是在窗体中显示字符,比如printf("helloworld");是在屏幕中显示helloworld。要记住C语言每个语句后面都会有个分号,标志这一句的结束,正如每个人生的分号都意味着新阶段的开始。

马上来试试printf的功能吧!简单输入两句代码后点击“编译链接并运行”按钮就能看到弹出的窗口中出现helloworld这几个字符

#include<stdio.h>
  
void main()
  
{
  
     printf("helloworld");
  
     getch();
  
}



程序后面的getch()是等待按键输入,同学们可以将这一句删除试试效果,如果没有这个语句的话程序会一闪而过。在这里getch作用就是卡住程序,让程序等待一个按键输入后再走到末尾,结束程序。

cprintf的功能和printf相似,但在显示有格式的文字上比printf有优势,以后在显示有颜色的字符时会用到cprintf。

printf是一个神奇的函数,它和textcolor(数值);配合使用时就能显示有颜色的字体,cprintf和textcolor是要好的朋友,彼此不分离。各个数值的含义如下



数值


含义


字符或背景


0




字符/背景


1




字符/背景


2


绿


字符/背景


3




字符/背景


4




字符/背景


5


洋红


字符/背景


6




字符/背景


7


淡灰


字符/背景


8


深灰


字符


9


淡蓝


字符


10


淡绿


字符


11


淡青


字符


12


淡红


字符


13


淡洋红


字符


14




字符


15




字符


比如要显示绿色(数值为2)的helloworld,程序如下:

#include<stdio.h>
  
void main()
  
{    textcolor(2);
  
     cprintf("helloworld");
  
     getch();
  
}



Printf的另一个好朋友是gotoxy,它和gotoxy(横坐标,纵坐标);配合使用就能调整文字的位置,参数中横坐标和纵坐标都是从1开始,左上角就是(1,1)

比如在第5列第4行显示helloworld。

#include<stdio.h>
  
void main()
  
{    gotoxy(5, 4);
  
     cprintf("helloworld");
  
     getch();
  
}



Printf也能显示一些键盘无法打出的字符,就像人们总能用一些奇怪的符号去表示特定的内容。格式是cprintf("%c",数值);%c是一个占位符,表示显示后面数值所对应的字符,各数值和它对应的字符如下:
比如要显示一个笑脸,上图中笑脸对应的数字为2。

#include<stdio.h>
  
void main()
  
{
  
     cprintf("%c",2);
  
     getch();
  
}



也可以在一个语句中显示多个奇怪字符,显示出来的字符结果完全和printf双引号里的内容一致。如果有多个%c则需要在双引号的后面添加多个数值,它们一一对应。

#include<stdio.h>
  
void main()
  
{
  
     cprintf("I  %c you %c",2,1);
  
     getch();
  
}


例子中的2对应第一个%c,1则对应第二个%c。

既然%c表示字符,那么其它的呢?这种占位功能的符号还有很多,比如%d就是显示整型数值,%f就是显示浮点型数值(小数),还有一些转义字符,比如“\n”就表示换行。

定义一个变量a,然后让它自加20,最后用%d显示出来:

#include<stdio.h>
  
void main()
  
{
  
     int a=10;
  
     a=a+20;
  
     cprintf("now  a = %d",a);
  
     getch();
  
}



了解这些知识之后就可以绘制飞机模型,初定飞机模型如下,这个形状由白色的机身和绿色的机翼和尾翼组成。

从众多字符中找到一个ASC码值为219的字符“■”作为单元构建飞机模型。模型中白色对应的颜色数值是15,绿色对应的是2。

从最上面的白色画起,用到设置颜色的textcolor()和设置位置的gotoxy。第一块白色的位置应该是1行3列。

#include<stdio.h>
  
void main()
  
{
  
textcolor(15);
  
gotoxy(3, 1);
  
cprintf("%c",219);
  
getch();
  
}


同样的道理再添加一行绿色、一行白色再一行绿色即可,全部代码,/*文字*/是表示注释,对程序没有任何影响。


#include<stdio.h>
  
void main()
  
{
  
/*第一行*/
  
textcolor(15);
  
gotoxy(3, 1);
  
cprintf("%c",219);
  
/*第二行*/
  
textcolor(2);
  
gotoxy(1, 2);
  
cprintf("%c%c%c%c%c",219,219,219,219,219);
  
/*第三行*/
  
textcolor(15);
  
gotoxy(3, 3);
  
cprintf("%c",219);
  
/*第四行*/
  
textcolor(2);
  
gotoxy(2, 4);
  
cprintf("%c%c%c",219,219,219);
  
  
getch();
  
}


完成后你可以将这个文件储存到你喜欢的位置,点击“编译链接并运行”按钮你会发现在文件储存的目录中多了两个文件,其一是.OBJ文件,另一个是.EXE文件。
这时你就可以将.EXE文件发送给亲朋好友,让他们羡慕嫉妒恨去吧!人生需要分享,程序也是如此,也许程序就是一段人生之路,从空白到涂鸦再到完整。



这是汕头大学动漫游戏工作室、汕头大学动漫技术与游戏开发协会的培训教材啦,当然,是原创的。


2.jpg (62.46 KB, 下载次数: 10)

2.jpg

评分

参与人数 1星屑 +200 收起 理由
逍遥仙君 + 200

查看全部评分

Lv2.观梦者

梦石
0
星屑
491
在线时间
339 小时
注册时间
2010-12-15
帖子
926

开拓者

2
发表于 2011-10-11 22:10:59 | 只看该作者
本帖最后由 tamashii 于 2011-10-11 22:14 编辑

这不是罗裴羽吗?

算法是好的算法
就是工具有点老

能不能讲讲DirectX编程呢?
回复 支持 反对

使用道具 举报

Lv2.观梦者

(?????)

梦石
0
星屑
700
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

3
发表于 2011-10-12 01:56:27 | 只看该作者
初学者中的初学者表示低级语言不是用来底层开发的么 = = b
应该是学过高级语言之后再学的吧?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
77
在线时间
247 小时
注册时间
2010-6-27
帖子
176
4
发表于 2011-10-12 19:56:13 | 只看该作者
哎哟,我在学C++,看见你发C语言制作游戏的帖子就过来支持一下!
[pmshow=52,22394]喵喵[/pmshow]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
311 小时
注册时间
2011-3-4
帖子
238
5
发表于 2011-10-12 20:43:44 | 只看该作者
好赞= =学习了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
6
发表于 2011-10-12 20:58:54 | 只看该作者
有个问题问问大家,有人baidu过罗培羽吗?看百科
http://baike.baidu.com/notexists?word=%C2%DE%C5%E0%D3%F0
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
74 小时
注册时间
2008-10-13
帖子
177
7
发表于 2011-10-12 21:44:36 | 只看该作者
正在学C++的路过 + 1
又从楼主这儿学到了些东西
各种感谢~~
世界之大,全部坑化!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

反伸手党斗士

梦石
0
星屑
91
在线时间
1128 小时
注册时间
2009-9-10
帖子
2513

贵宾

8
发表于 2011-10-12 22:08:21 | 只看该作者
C++围观- -话说师傅子在哪里?
快来吐槽两句啊- -
回复 支持 反对

使用道具 举报

Lv1.梦旅人

追从自然的旅行者
奇特空·煦

梦石
0
星屑
107
在线时间
1387 小时
注册时间
2010-12-31
帖子
4944

开拓者贵宾

9
发表于 2011-10-14 17:35:14 | 只看该作者
zhixin1997 发表于 2011-10-12 22:08
C++围观- -话说师傅子在哪里?
快来吐槽两句啊- -

纯字符游戏么?
表示曾经同样做过纯字符的游戏游戏引擎坑掉了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
255
在线时间
611 小时
注册时间
2011-6-6
帖子
1335
10
发表于 2011-10-14 18:40:21 | 只看该作者
特地为语言编程而来。。。。支持! 不过。。。基础部分的知识呢?这些似乎还是很难懂。。因为他也是建立在某些基础之上的乎?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-30 07:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表