您的位置:逆风者 易语言 正文
原作者:www.upwinder.com 添加时间:2007-09-01 原文发表:2007-08-31 人气:18来源:
本文章共3122字,分3页,当前第1页,快速翻页:
 

****************** 在易语言中写 [小游戏] *********************

## 首先说明:我没有 也不会 写游戏.也从来没有写过一个最简单的游戏.

写这篇文章是因为从小喜欢游戏,一直以来,学习编程的过程中一直喜欢
游戏方面的东东.我想和我一样的人,大概还有很多吧?

## 这里将要讨论的不是什么高深的游戏原理.而只是在易语言中如何
画出游戏画面.因为懂的不多,请高手指正.



主要内容 : 1:如何画出图像.
2:如何消除闪烁.
3:如何设计角色结构.
4:如何进行半透明混合
5:如何进行高级图像处理




**********************************************************************
(一):

首先,如何画出图像?
太简单了,用画板.

图片号=载入图片("图片文件名")
画板1.画图片(图片号)


**其次,画动画

也很简单: 首先载入多个图片,其图片号存入 图片号数组[N]中.

计次循环首(图片数,计次变量)

画板1.画图片(图片号数组[计次变量])

计次循环尾



******* 你现在大概看到了他的坏处,太闪烁了.

我们可以有两个办法.

1: 画板1.禁止重画()
画板1.画图片()
画板1.充许重画()


2: 再放一个 画板2




先在画板2上面画出我们想画的图像.再把画板2 复制到 画板1 上去.


## 实际上, 我们将要采用的就是方法 2.
你可以试一下,两个画板复制 的速度是 画图片 的多少倍.我想
大概有 10 倍左右.


********************************************

上面的试验 如果 每一次画 只画一个图片上去,那么你看不出有什么不同.

但实际操作中,每一帧画面都是由许多 小图片 所组成的.

比如,一个飞机游戏. 敌机有十多架,再加上満天的子弹,都要我们一个一个的画
上去,如果直接在 窗口主画板 上画,必然会出现闪烁. 所以我们要设两个
画板, 主画板 和 副画板. 先在副画板上 把要画的飞机和子弹 一个 一个的
画上去, 再用一个
副画板.复制(,,,,主画板,,,)
把他们一下子复制到主画板上去.



## 这里,我再加一句,敌机和子弹 也是图片,如果直接用 画图片() 画到副画板
上,会消耗时间. 所以, 还要再加一个画板
材料画板
那么是不是 有多少敌机图片就要加多少画板呢?

不可以.

这里就要 设计一下 数据的结构了.

设一个 结构名为 [ 原型 ]

它有如下 成员:
1:x
2:y
3:宽度
4:高度
5:停留时间

载入图片时,可以将所有要用到的图片 集合到一张图片上,载入此图片到材料画板


然后 设一个 数组变量
物体原型[N] 数据类型 原型

程序运行前将 材料画板上的各个 要画的物体 在材料画板上的 左顶点,长度,
宽度,依次 赋值 给 物体原型[N]数组的各个元素.


这样,在程序中使用起来,就方便了.

材料画板.复制(,,物体原型[N].宽度,物体原型[N].高度,副画板,物体原型[N].x,物体原型[N].y,)


实际上,我们将来还要再来一个 结构 [ 实物体 ]

他的成员为:
1:x
2:y
3:原型 数据类型 原型
4:层次 (指示其在多个物体时的遮挡层次)
5:是否碰撞检测
6:前进方向
7:所去目标坐标
8:被碰撞时的处理方法




到时候真正用到的将 是这个实物体.


说了这么多,很无聊.实际上,相当于我们构建一个 易语言 中的可视控件.

比如 图片框1.x=100,图片框1.y=200 就可以将它移动到 100,200 处.
我们就是在模仿它的原理.

## 为什么 不直接 用可视控件 来做呢?? 就是因为 速度.



************************************************

上面讨论了 一下 游戏中的结构,实际上你可以自已任意的设计.只要你觉得方便就可以.
所以我也不多说了.主要还是讲讲图像方面.







## 如何 画半透明合成 的图像?

这个又叫 alpha 混合. 是很多大型游戏中 必被用到的.在API 中有一个函数可以供我
们使用. AlphaBlend()

---------------------------------------
Dll命令:半透明混和
返回值类型:逻辑型
Dll库文件名:msimg32.dll
在Dll库中的命令名:AlphaBlend
参数:hdc1
参数:x
参数:y
参数:宽度
 
本文章更多内容1 - 2 - 3 - 下一页>>
搜索更多
Google
相关文章

『易语言俱乐部』-[下载]进程列表模块错误信
[更新]云外归鸟的MDI窗口支持库 (2.0#0版)
易语言中的“取命令行()”有错误
[注意]个人收集的部分超级列表框列程
[原创]用编辑框做的语法即使高亮
edb到html终于做好了
红天蝎圆周率计算分析程序(1.2、1.3版)源
[分享]近在眼前-视频捕捉控件及简单应用例
我把3.5版的扩展库命令编集成WORD.[原创]
[公告]易友们先睹为快,我的香港销售页
易语言免费教学的一些不同做法
[原创]枚举对象类模块1.0(有WMI详细例子)
笨笨全功能特殊外观窗口--多彩窗口的例程
树型框如何保存其中的表项
[推荐]已压缩并加密的易3.8修正二支持库 压
易语言病毒误报清除程序汇编版
[开源]易模块-4.15更新,动态创建窗口组件-开
[源码]■■■[精]比高级菜单还高级的高级菜
[调查]易语言取得较好经济效益的软件有哪些
[原创]图片快速无极限放大和平移

相关评论


本文章所属分类:首页 易语言