如何用彝语制作游戏修改器?

写这篇文章是因为我从小就喜欢游戏,在学习编程的过程中也一直喜欢。

游戏用品。我想有很多人和我一样吧?

# #我们这里要讨论的不是高深的博弈原理,只是它在彝语中是如何运作的。

画游戏画面。因为知道的不多,请指正。

主要内容:1:如何画一幅图像。

2.如何消除闪烁?

3.如何设计角色结构?

4.如何进行半透明混合

5.如何进行高级图像处理

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

(1):

一、如何画出一个形象?

太简单了。使用绘图板。

第一

图片编号=加载的图片(“图片文件名”)

画板1。画一张图(图号)

* *第二,画动画。

也很简单:首先加载多张图片,它们的图片编号存储在图片编号数组[N]中。

计数循环头(图片数量,计数变量)

画板1。画一张图片(图片编号数组[计数变量])

计数周期尾部

* * * * * *你现在大概看到了他不好的一面,太忽悠了。

我们可以有两种方式。

1:画板1。不要重画()

画板1。画一幅画()

画板1。允许重画()

2:放另一个画板2

首先在画板上画出我们想要画的图像。然后把画板2复制到画板1。

# #其实我们要采用的是方法二。

你可以试试,复制两个画板的速度是画图的多少倍。我认为

大概10次。

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

如果你在上面的实验中一次只画一张图,你看不出有什么不同。

但实际上,每一帧都是由许多小图片组成的。

比如飞机游戏。敌机十多架,加上天上的子弹,都需要我们一架一架画。

往上走,如果直接在窗口的主画板上画,难免会闪烁。所以我们必须设置两个。

画板,主画板,辅助画板。首先在辅助画板上把飞机和子弹一个个画出来。

画出来用另一个。

辅助画板。复制(,,,主绘图板,,)

立刻把它们复制到主绘图板上。

# #这里我补充一下,敌机和子弹也是图片。如果直接用图在辅助画板上画出来()。

其实这需要时间。因此,我们需要添加另一个画板。

材料绘图板

那么有多少敌机图片就有必要加多少画板吗?

你不能。

这里有必要设计一下数据结构。

让一个结构被命名为[原型]

它有以下成员:

1:x

2:y

3:宽度

4:身高

5:停留时间

加载图片时,可以把所有要用的图片组装成一张图片,这张图片可以加载到材质画板中。

然后设置一个数组变量。

对象原型[N]数据类型原型

在程序运行之前,左侧顶点、长度,

宽度,依次赋给object prototype [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。

我们只是在模仿它的原理。

# #为什么不直接用视觉控制来实现呢?是因为速度。

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

上面讨论了游戏的结构。其实你可以随意设计,只要方便你就行。

所以就不多说了。我主要说图像。

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

这也称为阿尔法混合。很多大型游戏都要用到。API中有一个函数适合我。

儿童使用。AlphaBlend()

-

Dll命令:半透明混合

返回值类型:逻辑类型

Dll库文件名:msimg32.dll

Dll库中的命令名:AlphaBlend

参数:hdc1

参数:x

参数:y

参数:宽度

参数:高度

参数:hdc2

参数:x2

参数:y2

参数:宽度2

参数:高度2

参数:复制方法数据类型:整数

-

其实它的使用方法和画板的复制方法差不多,只是多了两个参数。

参数hdc1和hdc2是源画板和目标画板的设备句柄。

-

Dll命令:getdc

返回值类型:整数类型

Dll库文件名:user32.dll

Dll库中的命令名:GetDC

参数:窗口句柄

-

具体使用方法如下:

-

子程序:_ _开始窗口_已创建

Hdc1 = getdc(画板1。取窗口句柄())

Hdc2 = getdc(画板2。获取窗口句柄())

-

-

子程序:_ Button 4_ Click

Alpha func (HDC1,0,0,200,200,HDC2,0,0,200,200,混合度× 50)

-

说明:以上混合度=幂(2,16),后面50是混合度,从(0~255)。

这是因为该参数是一个四字节的结构指针。

上面的程序可以运行,当然你要先在画板2上画图,或者先设置好底图。

其实不仅画板可以拿出dc,任何窗口对象都有dc,所以可以把按钮控件(

或任何其他控件)到绘图板或任何地方。

当然,用完dc后,还得安全释放。

添加以下命令到_ Start window _将被销毁。

释放dc(_开始窗口。获取窗口句柄(),hdc1)

释放dc(_开始窗口。获取窗口句柄(),hdc2)

该命令定义如下:

-

Dll命令:释放dc

Dll库文件名:user32.dll

Dll库中的命令名:ReleaseDC

参数:窗口句柄

参数:hdc

-

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

# #如何进行高级图形处理?

注:请看,是高级,不是高速,因为我还没学会高速处理图像。

这里说的会是最简单的方法。如果知道,请回复,非常感谢。

比如有些游戏进入,屏幕变成黑色或者白色。有时候,它会变红。

颜色(大多是死的时候)。就像被一层透明的彩纸挡住了一样。

这是如何实现的?

先定义一个字节集zz。

然后

Zz=画板1。拍照()

此时,画板1上所有点的颜色值都存储在zz数组中。其格式如下。

前54个元素是格式描述(我不知道,我猜的)

从第55个元素到最后,是图像中每个点的数据。

解释如下:如果画板左下角有一个红点1,那么。

Zz[55]=0蓝色值

Zz[56]=0绿色值

Zz[57]=255红色值

知道了这一点,我们就可以用自己的方式处理图像。

-

子程序:_ button 1_ clicked

本地容器:zz数据类型:字节集

本地容器:计数数据类型:字节集

Zz =画板1。拍照(,)

计数=55

计数循环头(画板1。宽度*画板1。身高,)

Zz[计数]=255

计数=计数+3

计数周期尾部

画板1。底图= ZZ

-

上面我们把所有的蓝色都改成了255(最大值),整个画板上的图像看起来就像一个图层。

蓝色透明纸。我们的愿望实现了。......

最后不得不说:这种方法处理起来很慢,主要时间都浪费在画板上了。拍照()和

画板1。底图=上面的zz。

这种方法最简单,但效率最低。我在这里测试过。

当画板的尺寸为400 * 200时

上述程序的执行时间约为0.4-0.5秒。也就是说,每秒只能画两幅图像。

适当增加颜色变化值,当每帧图像的像素颜色变化值增加到大约10时,

效果看起来差不多,可以实现淡入淡出效果。

用这种方法可以进行各种处理,如滤镜效果、浮雕效果、真半透明合成等。

(上面描述的Alphablend () API不是真正的alpha mix,而是固定的mix。)

“你什么都知道。你什么都可以说。一百个人的名誉是不加密的。百人灭不稀。”——诸葛廷栋