From 65478cc8a21c323fdcbe3cdf2f086d9c528b0910 Mon Sep 17 00:00:00 2001 From: hakuzousu Date: Tue, 18 Jul 2023 11:07:36 +0000 Subject: [PATCH 01/12] =?UTF-8?q?for=E5=BE=AA=E7=8E=AF=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E4=B8=8D=E5=BD=93=E5=B0=B1=E4=BC=9A....?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: hakuzousu --- ...347\232\204for\345\276\252\347\216\257.go" | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 "golang/\345\245\207\346\200\252\347\232\204for\345\276\252\347\216\257.go" diff --git "a/golang/\345\245\207\346\200\252\347\232\204for\345\276\252\347\216\257.go" "b/golang/\345\245\207\346\200\252\347\232\204for\345\276\252\347\216\257.go" new file mode 100644 index 0000000..7e5f19d --- /dev/null +++ "b/golang/\345\245\207\346\200\252\347\232\204for\345\276\252\347\216\257.go" @@ -0,0 +1,37 @@ +package main + +import ( + "fmt" + "runtime" + "time" +) + +var count uint + +func main() { + for { + q := time.Now() + runtime.GC() + p := time.Now().Format("15时02分05秒") + count++ + fmt.Printf("%v:什么%v什么\n", p, count) + qs := time.Now() + qsf := time.Now().Sub(qs) + fmt.Printf("这是个文本%v\n", qsf) + fmt.Printf( + "%v:B:啊?\n", + time.Now().Format("15时02分05秒"), + ) + runtime.GC() + qf := time.Now().Sub(q) + fmt.Println("花费时间", qf) + time.Sleep(time.Second) + for { + runtime.Gosched() + fmt.Printf("%v -> 分配完毕", time.Now().Format("15-02-05")) + time.Sleep(time.Microsecond * 666) //卡在这个for循环了 + + } + } + +} -- Gitee From ebb83bb0b869630d9457b431a50484f6773641c8 Mon Sep 17 00:00:00 2001 From: HanTools <183713750@qq.com> Date: Tue, 18 Jul 2023 11:14:18 +0000 Subject: [PATCH 02/12] =?UTF-8?q?=E4=BD=BF=E7=94=A8if=E9=80=90=E4=BD=8D?= =?UTF-8?q?=E6=AF=94=E5=AF=B9=E5=AF=86=E7=A0=81=20=E6=80=BB=E7=BB=93?= =?UTF-8?q?=E4=B8=80=E4=B8=8B=E6=9C=89=E4=BD=95=E9=94=99=E8=AF=AF=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 变量名意义不明 2. 正常都用 `len(p2)` ,这里使用 `p2.__len__()` , ~~生怕你看得懂~~ 3. `8 != p2.__len__()` 虽然语意语法都对,但是语序和正常人说话时的语序相反,你会说”密码长度不等于8位“而不会说”8位不等于密码长度“ 4. `input` 内的提示语不对 5. 使用 if 逐一比对密码会有个潜在的风险——计时攻击 6. 使用 if 逐一比对密码会使代码段过长 7. 把位数写死后期更改会很麻烦 8. 缩进太乱 但是你别说,你还真别说,他能跑!他甚至能跑!我测试过了,他真的能跑! Signed-off-by: HanTools <183713750@qq.com> --- python/password.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 python/password.py diff --git a/python/password.py b/python/password.py new file mode 100644 index 0000000..c1ca5fd --- /dev/null +++ b/python/password.py @@ -0,0 +1,42 @@ +p = "password" +p2 = input("> ") +while True: + if 8 != p2.__len__(): + print("长度不是8位") + p2 = input("> ") + else: + while True: + if p[0]!=p2[0]: + print('第1位错误') + p2 = input('> ') + continue + if p[1]!=p2[1]: + print('第2位错误') + p2 = input('> ') + continue + if p[2]!=p2[2]: + print('第3位错误') + p2 = input('> ') + continue + if p[3]!=p2[3]: + print('第4位错误') + p2 = input('> ') + continue + if p[4]!=p2[4]: + print('第5位错误') + p2 = input('> ') + continue + if p[5]!=p2[5]: + print('第6位错误') + p2 = input('> ') + continue + if p[6]!=p2[6]: + print('第7位错误') + p2 = input('> ') + continue + if p[7]!=p2[7]: + print('第8位错误') + p2 = input('> ') + continue + break + break -- Gitee From 2183e8cf88bc27453776526b09ad104d0d27d24e Mon Sep 17 00:00:00 2001 From: zinface Date: Tue, 18 Jul 2023 20:03:53 +0800 Subject: [PATCH 03/12] =?UTF-8?q?bash-completion:=20=E8=A1=A5=E5=85=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E4=B8=AD=E7=9A=84=E4=B8=80=E4=BA=9B=E9=9A=90?= =?UTF-8?q?=E8=97=8F=20bullshit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shell/bash-completion/README.md | 11 ++ .../bash-completion-comgen-and-IFS.sh | 180 ++++++++++++++++++ .../bash-completion/bash-completion-comgen.sh | 39 ++++ shell/bash-completion/result.txt | 11 ++ 4 files changed, 241 insertions(+) create mode 100644 shell/bash-completion/README.md create mode 100644 shell/bash-completion/bash-completion-comgen-and-IFS.sh create mode 100644 shell/bash-completion/bash-completion-comgen.sh create mode 100644 shell/bash-completion/result.txt diff --git a/shell/bash-completion/README.md b/shell/bash-completion/README.md new file mode 100644 index 0000000..643af95 --- /dev/null +++ b/shell/bash-completion/README.md @@ -0,0 +1,11 @@ +# bash 补全脚本 (隐藏的 bullshit) + +> 在编写补全脚本时,一个个隐藏的细节让你大呼 ooooh shit! + +- 详细说明了两个 compgen 的 bullshit + +- 详细说明了IFS 与 '补全包含空格的结果' 行为下的 bullshit + +参考灵感: + +- 某命令的补全脚本(重构中...):https://gitee.com/zinface/bash-completion.ywloader diff --git a/shell/bash-completion/bash-completion-comgen-and-IFS.sh b/shell/bash-completion/bash-completion-comgen-and-IFS.sh new file mode 100644 index 0000000..4ff8b1f --- /dev/null +++ b/shell/bash-completion/bash-completion-comgen-and-IFS.sh @@ -0,0 +1,180 @@ +#!/bin/bash + +# 首先看一下 compgen 的用法 +# compgen: + # 用法:compgen [-abcdefgjksuv] [-o 选项] [-A 动作] [-G 全局模式] [-W 词语列表] [-F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [词语] + + +# 在补全脚本中, COMPREPLY 是一个包含 compgen 结果的变量,这也是最终提供给到命令补全的结果 + + # 例如:我们使用 cat /etc/passwd | awk -F ":" '{print $1}' 来输出一个用户列表 + + # 它会输出一些预期结果,这是用户列表,用 USERS 变量装起来 + # root + # daemon + # sys + # sshd + # lightdm + # sync + + # 注意这些内容是没有 ' ' 空格分隔的,基本上就是连续词 + + USERS=`cat /etc/passwd | awk -F ":" '{print $1}'` + + COMPREPLY=( + $(compgen -W "${USERS}" -- s) + ) + + # 它会输出正常的预期的内容 + # sys + # sshd + # sync + + +# 为了准备接下来的 bullshit,先概述一下关于 USERS[@] 与 USERS[*] 的内容,其中包含 IFS. + + # 这里使用 COMPREPLY 中的结果,它是一个数组,有刚刚的 3 个元素 + + ehco "${COMPREPLY}" + # sys + + # 它会输出一个 sys,不达预期,因为是一个数组,只使用 ${array} 则只会输出第一个值 + + echo "${COMPREPLY[@]}" + # sys sshd sync + + echo "${COMPREPLY[*]}" + # sys sshd sync + + # 从 ${array[@]} 与 ${array[*]} 的输出中,感觉不到明显的差别,但这是一个区别非常大的东西 + + + IFS=',' + + # 当 IFS 被设置为 ',' 逗号时,两个输出的区别则会明显 + + echo "${COMPREPLY[@]}" + # sys sshd sync + + echo "${COMPREPLY[*]}" + # sys,sshd,sync + + # 注意,这里始终使用的是 " " 进行包围变量结果的形式 + +unset IFS + + + + +# 这里开始 bullshit 的准备,假设我有一个需要参与补全的结果,它是有空格的 + + cat ./result.txt + # RFC 1928 - SOCKS 5 协议中文文档「译」 + # github release 加速下载 + # M-Team - 一个 BT 论坛 + # fetch-latest-vscode-amd64-deb + # https://mirror.ghproxy.com/ + # frp 相关内容 + # 小白安装 Gentoo 简述(不错的文章) + # Ipv6 连接测试网页 + # connect-Mi10 + # Dockerfile 文件详解 + # Jenkins 下载页面 + + + # 这里,我以变量形式装起来 + + SUPPLY=`cat ./result.txt` + + # 如果使用 compgen -W "${SUPPLY}" ... 来直接尝试补全 fetch-latest-vscode-amd64-deb + + compgen -W "${SUPPLY}" fetch + # fetch-latest-vscode-amd64-deb + + # 它的输出结果是正确的 + + compgen -W "${SUPPLY}" connect + # connect-Mi10 + + # 它的输出结果是正确的 + + + # bullshit 开始 + compgen -W "${SUPPLY}" github + # github + + # 它的输出结果是错误的,疑似是结果中的空格成为了分隔符 + + compgen -W "${SUPPLY}" I + # Ipv6 + + # 它的输出结果仍是错误的 + + compgen -W "${SUPPLY}" RFC + # RFC + + # 它的输出结果仍是错误的 + + # 这里的输出的结果,不达预期,连续部分输出的结果是正常的,包含空格的部分则是有问题的 + + + IFS=$'\n' + # 注意这里的 $'\n',意思是让 '\n' 作为一个 IFS 的单字符值。 + # 如果没有 $ 符号则 IFS='\n' 表示 '\n' 是一个字符串,也等效于 IFS="\n",字符串值无法在后续结果中产生效果 + + # 再来测试补全结果 + compgen -W "${SUPPLY}" I + # Ipv6 连接测试网页 + + compgen -W "${SUPPLY}" RFC + # RFC 1928 - SOCKS 5 协议中文文档「译」 + + compgen -W "${SUPPLY}" fetch + # fetch-latest-vscode-amd64-deb + + compgen -W "${SUPPLY}" 小白 + # 小白安装 Gentoo 简述(不错的文章) + + # 经过 IFS 设置后,这里的补全结果是正常的 + + # 如果只是 compgen,这样就已经是 bullshit 预期的解决方案 + + # 如果要涉及到实际的命令行补全结果,例如 + + COMPREPLY=( + $(compgen -W "${SUPPLY}" RFC) + ) + + # <命令> RFC 1928 - SOCKS 5 协议中文文档「译」 + # ^ --------- 补全内容 ---------- ^ + # ^ 次级命令 + # ^ 主命令 + + # 这种预期结果是不可行的,次级命令接收的参数并非是一个整体的字符串参数,所以需要对 COMPREPLY 的内容进行处理 + + for (( i=0; i<${#COMPREPLY[@]}; i++ )); do + COMPREPLY[$i]="'${COMPREPLY[i]}'" + # 给每一个结果都加入 '' 单引号包围 + done + + # <命令> 'RFC 1928 - SOCKS 5 协议中文文档「译」' + # ^ ^ --------- 补全内容 ----------- ^ + # ^ 次级命令 + # ^ 主命令 + + # 这样,预期的结果次级命令接收的参数是一个整体的字符串参数,可达预期 + + unset IFS + + +# bullshit 关键点: + # 补全脚本如果涉及多行、包含空格的命令输出式结果形式的内容,一般形式写法可能会产生非预期行为 + + # 来自 man bash 的解释,但它却没有细说 + + # IFS 内部字段分隔符 Internal Field Separator 用来在扩展之后进行分词,使用内部命令 read 将行划分成词。默认值是 + # ``''。 + + + +# IFS 可能只适用于 linux bash shell 内部使用,而 bash 补全脚本正是运行在 bash 内部,提供命令强大的补全能力 \ No newline at end of file diff --git a/shell/bash-completion/bash-completion-comgen.sh b/shell/bash-completion/bash-completion-comgen.sh new file mode 100644 index 0000000..e11df43 --- /dev/null +++ b/shell/bash-completion/bash-completion-comgen.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# 首先看一下 compgen 的用法 +# compgen: + # 用法:compgen [-abcdefgjksuv] [-o 选项] [-A 动作] [-G 全局模式] [-W 词语列表] [-F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [词语] + + +# 当我们第一次使用 compgen -W 通过词语列表来输出简单可能的补全词时,它没有任何问题 + + compgen -W "java javac rust python go gcc" g + + # 它会输出两个可能的补全: + # gcc + # go + +# 如果你想为 java 添加一些参数补全,例如 -jar -classpath .. 等,并提供 -j 为可能的补全参考(目的是直接补全 -jar) + + compgen -W "-jar -classpath --help -version" -j + + # 它会输出非预期的内容 - bullshit + # -jar + # -classpath + # --help + # -version + + # 正确的写法是,通过 -- 来隔断,这样才能输出预期内容 + + compgen -W "-jar -classpath --help -version" -- -j + + # -jar + + + +# bullshit 关键点: + # 补全脚本如果涉及参数形式的内容,一般形式写法可能会产生非预期行为 + + # 来自 man bash 的解释,但它却没有与 compgen 写在一块 + + # -- -- 标志选项的结束,禁止其余的选项处理。任何 -- 之后的参数将作为文件名和参数对待。参数 - 与此等价。 \ No newline at end of file diff --git a/shell/bash-completion/result.txt b/shell/bash-completion/result.txt new file mode 100644 index 0000000..df39112 --- /dev/null +++ b/shell/bash-completion/result.txt @@ -0,0 +1,11 @@ +RFC 1928 - SOCKS 5 协议中文文档「译」 +github release 加速下载 +M-Team - 一个 BT 论坛 +fetch-latest-vscode-amd64-deb +https://mirror.ghproxy.com/ +frp 相关内容 +小白安装 Gentoo 简述(不错的文章) +Ipv6 连接测试网页 +connect-Mi10 +Dockerfile 文件详解 +Jenkins 下载页面 -- Gitee From 0eccfcf043240184708da41fa440f4e2e1dbc370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E6=B0=B4?= <1494909107@qq.com> Date: Tue, 18 Jul 2023 13:25:27 +0000 Subject: [PATCH 04/12] =?UTF-8?q?add=20lua/Yuns4949/=E9=A3=9E=E6=9C=BA?= =?UTF-8?q?=E5=B0=8F=E6=B8=B8=E6=88=8F.lua.=20=E6=B7=BB=E5=8A=A0=E9=A3=9E?= =?UTF-8?q?=E6=9C=BA=E5=B0=8F=E6=B8=B8=E6=88=8F.lua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 云水 <1494909107@qq.com> --- ...2\345\260\217\346\270\270\346\210\217.lua" | 625 ++++++++++++++++++ 1 file changed, 625 insertions(+) create mode 100644 "lua/Yuns4949/\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" diff --git "a/lua/Yuns4949/\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" "b/lua/Yuns4949/\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" new file mode 100644 index 0000000..6431c92 --- /dev/null +++ "b/lua/Yuns4949/\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" @@ -0,0 +1,625 @@ +--=============================================================================-- +-- Yuns的垃圾游戏史 第一篇 : +-- +-- 简单解释一下:那是七年之前的时候,那时候的我还没有学过什么程序语言,也就高中时候 +-- 信息课上接触的一点VB的皮毛,在一片荒野之中,找到了一个好玩具:EDGameMaker,故事 +-- 从此开始…… +-- 简单看了官方的Demo之后,我就以极度粗野的风格写出了几个东西,在现在看了,简直是一个 +-- 离谱 + +-- 第一个,试水作:飞机游戏,总体是能运行的,而且是仅能运行! +--=============================================================================-- + + +--=============================================================================-- +-- ■ 加载运行库 +--=============================================================================-- +require "Lib/engine" + + +--=============================================================================== +-- ■ 初始化屏幕 +--=============================================================================== +引擎 = D2D_引擎.创建("战网--*****",60,800,600,true,true,"Dat/星.ico") + +文字=D2D_文字.创建(楷体,40,false,false,false) + +游戏进度=0 + +背景图片1=引擎:载入图片("Dat/2.jpg") +主角图片=引擎:载入图片("Dat/主角.png") +敌人图片1=引擎:载入图片("Dat/图片3.png") +敌人图片2=引擎:载入图片("Dat/图片2.png") +敌人图片3=引擎:载入图片("Dat/enemy4.png") +小boss图片=引擎:载入图片("Dat/图片1.png") +子弹图片1=引擎:载入图片("Dat/子弹1.png") +子弹图片2=引擎:载入图片("Dat/子弹2.png") +大招图片=引擎:载入图片("Dat/bomb.png") +进度图片1=引擎:载入图片("Dat/进度.png") +进度图片2=引擎:载入图片("Dat/无标题.png") +小王图片1=引擎:载入图片("Dat/enemy2.png") +小王图片2=引擎:载入图片("Dat/enemy1.png") + +背景精灵1=D2D_精灵.创建(背景图片1,0,0,800,600) +背景参数y=0 +背景参数x=0 + +主角动画=D2D_动画.创建(主角图片,4,4,0,0,100,100) +主角动画:播放() +主角动画:置中心点(50,50) +主角坐标x=400 +主角坐标y=400 +血=100 +主角包围盒=D2D_包围盒.创建(主角坐标x-50,主角坐标y-50,50,50) + +子弹精灵1=D2D_精灵.创建(子弹图片1,0,0,22,22) +子弹精灵1:置中心点(11,11) +子弹坐标x=0 +子弹坐标y=0 + +大招精灵=D2D_精灵.创建(大招图片,0,0,32,32) +鼠标x,鼠标y=引擎.取鼠标坐标() +大招精灵:置中心点(16,16) + +进度=0 +进度精灵1=D2D_精灵.创建(进度图片1,0,0,100,10) +进度精灵2=D2D_精灵.创建(进度图片2,0,0,100,10) + +血精灵1=D2D_精灵.创建(进度图片1,0,0,100,10) +血精灵2=D2D_精灵.创建(进度图片2,0,0,100,10) + +敌人数量1=15 +敌人1={} +for n = 1,敌人数量1 do + 敌人1[n]= + { + 精灵=D2D_精灵.创建(敌人图片1,0,0,100,100), + x=引擎:取随机整数(50,750), + y=引擎:取随机整数(50,100), + 包围盒=D2D_包围盒.创建(50,50,50,50), + 血=3, + 状态=="活" + } +敌人1[n].精灵:置中心点(50,50) +end + +敌人数量2=10 +敌人2={} +for n = 1,敌人数量2 do + 敌人2[n]= + { + 精灵=D2D_精灵.创建(敌人图片2,0,0,100,100), + x=引擎:取随机整数(50,750), + y=引擎:取随机整数(50,100), + 包围盒=D2D_包围盒.创建(50,50,50,50), + 血=6, + 子弹=D2D_精灵.创建(子弹图片2,0,0,22,22), + 状态=="活" + } +敌人2[n].精灵:置中心点(50,50) +敌人2[n].子弹:置中心点(11,11) +敌人2[n].子弹x=0 +敌人2[n].子弹y=0 +end + +敌人数量3=3 +敌人3={} +for n = 1,敌人数量1 do + 敌人3[n]= + { + 精灵=D2D_精灵.创建(小boss图片,0,0,200,200), + x=引擎:取随机整数(100,700), + y=引擎:取随机整数(100,150), + 包围盒=D2D_包围盒.创建(50,50,150,150), + 血=20, + 子弹=D2D_精灵.创建(大招图片,0,0,32,32), + 子弹包围盒=D2D_包围盒.创建(50,50,80,80), + 状态=="活" + } +敌人3[n].精灵:置中心点(100,100) +敌人3[n].子弹:置中心点(16,16) +敌人3[n].子弹x=0 +敌人3[n].子弹y=0 +end + +大王动画1=D2D_动画.创建(敌人图片3,8,4,0,0,64,64) +大王动画1:播放() +大王动画1:置中心点(32,32) +大王子弹=D2D_精灵.创建(大招图片,0,0,32,32) +大王子弹:置中心点(16,16) +大王子弹包围盒=D2D_包围盒.创建(50,50,100,100) +大王子弹x=0 +大王子弹y=0 +大王血=500 +大王血1=D2D_精灵.创建(进度图片1,0,0,100,10) +大王血2=D2D_精灵.创建(进度图片2,0,0,100,10) +大王包围盒=D2D_包围盒.创建(50,50,100,100) +大王x=-250 +大王y=150 + +小王动画1=D2D_动画.创建(小王图片1,8,4,0,0,64,64) +小王动画1:播放() +小王动画1:置中心点(32,32) +小王子弹1=D2D_精灵.创建(子弹图片2,0,0,22,22) +小王子弹1x=0 +小王子弹1y=0 +小王血1=50 +小王包围盒1=D2D_包围盒.创建(50,50,100,100) +小王1x=0 +小王1y=0 +小王1状态="活" + +小王动画2=D2D_动画.创建(小王图片2,8,4,0,0,64,64) +小王动画2:播放() +小王动画2:置中心点(32,32) +小王子弹2=D2D_精灵.创建(子弹图片2,0,0,22,22) +小王子弹2x=0 +小王子弹2y=0 +小王血2=50 +小王包围盒2=D2D_包围盒.创建(50,50,64,64) +小王2x=0 +小王2y=0 +小王2状态="活" + +--=============================================================================== +-- ■ 屏幕逻辑() +--=============================================================================== +function 屏幕逻辑 () + +时间=引擎.取最后帧时间() +主角动画:更新(时间) +大王动画1:更新(时间) +小王动画1:更新(时间) +小王动画2:更新(时间) + +背景参数y=背景参数y-1 + +if(引擎:取按键事件(键_键盘左)and(主角坐标x>50))then + 主角坐标x=主角坐标x-5 + 背景参数x=背景参数x-1 +end +if(引擎:取按键事件(键_键盘右)and(主角坐标x<750))then + 主角坐标x=主角坐标x+5 + 背景参数x=背景参数x+1 +end +if(引擎:取按键事件(键_键盘上)and(主角坐标y>50))then + 主角坐标y=主角坐标y-5 +end +if(引擎:取按键事件(键_键盘下)and(主角坐标y<550))then + 主角坐标y=主角坐标y+5 +end + +if(进度<3000)then + 进度=进度+1 +end + + return false +end + + + + +--=============================================================================== +-- ■ 屏幕渲染() +--=============================================================================== +function 屏幕渲染 () + 渲染开始() + 清屏(ARGB(255,128,128,128)) + + 背景精灵1:置显示区域(背景参数x,背景参数y,800,600) + 背景精灵1:显示() + + 进度精灵2:显示(32,0) + 进度精灵1:置颜色(颜色_紫) + 进度精灵1:显示_高级(32,0,0,进度/3000,1) + + 主角动画:显示(主角坐标x,主角坐标y) + 血精灵2:显示(40,570) + 血精灵1:显示_高级(40,570,0,血/100,1) + 文字:置颜色(颜色_红) + 文字:显示(0,560,"命") + 主角包围盒:置位置(主角坐标x-25,主角坐标y-25) + + if(血<=0)then + 血精灵1:置颜色(ARGB(0,0,0,0)) + 主角动画:置颜色(ARGB(0,0,0,0)) + 文字:显示(200,250,"游戏结束.按回车键重来") + if(引擎:取按键事件(键_回车))then + 进度=0 + 血=100 + 血精灵1:置颜色(ARGB(255,255,255,255)) + 主角动画:置颜色(ARGB(255,255,255,255)) + 游戏进度=0 + end + end + + if(血<=0)then + 主角坐标x=400 + 主角坐标y=400 + for n=1,敌人数量1 do + 敌人1[n].x=引擎:取随机整数(50,750) + 敌人1[n].y=-50 + end + + else + if(游戏进度<51)then + + for n=1,敌人数量1 do + if(敌人1[n].y>580)or(敌人1[n].状态=="死")then + 敌人1[n].x=引擎:取随机整数(50,750) + 敌人1[n].y=-50 + 敌人1[n].精灵:置颜色(ARGB(255,255,255,255)) + 敌人1[n].状态="活" + 敌人1[n].血=3 + else + 敌人1[n].y=敌人1[n].y+1 + if(敌人1[n].y>300)then + 敌人1[n].y=敌人1[n].y+2 + if(敌人1[n].x<主角坐标x)then + 敌人1[n].x=敌人1[n].x+2 + else + 敌人1[n].x=敌人1[n].x-2 + end + end + 敌人1[n].精灵:显示(敌人1[n].x,敌人1[n].y) + 敌人1[n].包围盒:置位置(敌人1[n].x-25,敌人1[n].y-25) + if(引擎:包围盒碰撞检测(敌人1[n].包围盒,主角包围盒))and(血>0)then + 血=血-0.1 + end + if(敌人1[n].包围盒:检测_点(子弹坐标x,子弹坐标y))then + 子弹坐标x=主角坐标x+引擎:取随机整数(-25,25) + 子弹坐标y=主角坐标y-50 + 敌人1[n].血=敌人1[n].血-1 + if(敌人1[n].血<0)then + 敌人1[n].状态="死" + 游戏进度=游戏进度+1 + 敌人1[n].精灵:置颜色(ARGB(0,0,0,0)) + end + end + end + end + end + + if(游戏进度>50)and(游戏进度<101)then + + for n=1,敌人数量2 do + if(敌人2[n].y>580)or(敌人2[n].状态=="死")then + 敌人2[n].x=引擎:取随机整数(50,750) + 敌人2[n].y=-50 + 敌人2[n].精灵:置颜色(ARGB(255,255,255,255)) + 敌人2[n].状态="活" + 敌人2[n].血=6 + else + 敌人2[n].y=敌人2[n].y+1 + if(敌人2[n].y==200)then + 敌人2[n].子弹x=敌人2[n].x + 敌人2[n].子弹y=敌人2[n].y+50 + end + if(敌人2[n].y>200)then + 敌人2[n].子弹:显示(敌人2[n].子弹x,敌人2[n].子弹y) + if(敌人2[n].子弹y>600)then + 敌人2[n].子弹x=敌人2[n].x + 敌人2[n].子弹y=敌人2[n].y+50 + else + 敌人2[n].子弹y=敌人2[n].子弹y+2 + end + if(敌人2[n].子弹x<主角坐标x)then + 敌人2[n].子弹x=敌人2[n].子弹x+1 + else + 敌人2[n].子弹x=敌人2[n].子弹x-1 + end + if(主角包围盒:检测_点(敌人2[n].子弹x,敌人2[n].子弹y))and(血>0)then + 血=血-5 + 敌人2[n].子弹x=敌人2[n].x + 敌人2[n].子弹y=敌人2[n].y+50 + end + + end + 敌人2[n].精灵:显示(敌人2[n].x,敌人2[n].y) + 敌人2[n].包围盒:置位置(敌人2[n].x-25,敌人2[n].y-25) + if(引擎:包围盒碰撞检测(敌人2[n].包围盒,主角包围盒))and(血>0)then + 血=血-2 + end + if(敌人2[n].包围盒:检测_点(子弹坐标x,子弹坐标y))then + 子弹坐标x=主角坐标x+引擎:取随机整数(-25,25) + 子弹坐标y=主角坐标y-50 + 敌人2[n].血=敌人2[n].血-1 + if(敌人2[n].血<0)then + 敌人2[n].状态="死" + 游戏进度=游戏进度+3 + 敌人2[n].精灵:置颜色(ARGB(0,0,0,0)) + end + end + end + end + end + + if(游戏进度>100)and(游戏进度<151)then + + for n=1,敌人数量3 do + if(敌人3[n].状态=="死")then + 敌人3[n].x=引擎:取随机整数(100,700) + 敌人3[n].y=-100 + 敌人3[n].精灵:置颜色(ARGB(255,255,255,255)) + 敌人3[n].状态="活" + 敌人3[n].血=20 + else + 敌人3[n].y=敌人3[n].y+1 + if(敌人3[n].y<200)then + 敌人3[n].y=敌人3[n].y+1 + 敌人3[n].子弹x=敌人3[n].x + 敌人3[n].子弹y=敌人3[n].y+50 + else + 敌人3[n].y=敌人3[n].y-1 + 敌人3[n].子弹:显示_高级(敌人3[n].子弹x,敌人3[n].子弹y,0,3,3) + 敌人3[n].子弹包围盒:置位置(敌人3[n].子弹x-40,敌人3[n].子弹y-40) + if(敌人3[n].子弹y>600)then + 敌人3[n].子弹x=敌人3[n].x + 敌人3[n].子弹y=敌人3[n].y+50 + else + 敌人3[n].子弹y=敌人3[n].子弹y+2 + end + if(敌人3[n].子弹x<主角坐标x)then + 敌人3[n].子弹x=敌人3[n].子弹x+1 + else + 敌人3[n].子弹x=敌人3[n].子弹x-1 + end + if(引擎:包围盒碰撞检测(敌人3[n].子弹包围盒,主角包围盒))and(血>0)then + 血=血-10 + 敌人3[n].子弹x=敌人3[n].x + 敌人3[n].子弹y=敌人3[n].y+50 + end + + end + 敌人3[n].精灵:显示(敌人3[n].x,敌人3[n].y) + 敌人3[n].包围盒:置位置(敌人3[n].x-75,敌人3[n].y-75) + if(引擎:包围盒碰撞检测(敌人3[n].包围盒,主角包围盒))and(血>0)then + 血=血-4 + end + if(敌人3[n].包围盒:检测_点(子弹坐标x,子弹坐标y))then + 子弹坐标x=主角坐标x+引擎:取随机整数(-25,25) + 子弹坐标y=主角坐标y-50 + 敌人3[n].血=敌人3[n].血-1 + if(敌人3[n].血<0)then + 敌人3[n].状态="死" + 游戏进度=游戏进度+5 + 敌人3[n].精灵:置颜色(ARGB(0,0,0,0)) + end + end + end + end + end + + if(游戏进度>150)and(游戏进度<200)then + 大王动画1:显示_高级(大王x,大王y,0,5,5) + if(大王x<400)then + 大王x=大王x+1 + else + 大王血2:显示_高级(300,40,0,2,1) + 大王血1:显示_高级(300,40,0,大王血/250,1) + 大王包围盒:置位置(275,125) + 小王动画1:显示(150,250) + 小王包围盒1:置位置(118,218) + if(小王1状态=="活")then + 小王子弹1:显示(小王子弹1x,小王子弹1y) + if(小王子弹1x>0)and(小王子弹1x<800)and(小王子弹1y<600)then + 小王子弹1y=小王子弹1y+3 + if(小王子弹1x>主角坐标x)then + 小王子弹1x=小王子弹1x-2 + else + 小王子弹1x=小王子弹1x+2 + end + else + 小王子弹1x=150 + 小王子弹1y=282 + end + if(主角包围盒:检测_点(小王子弹1x,小王子弹1y))then + 血=血-20 + 小王子弹1x=150 + 小王子弹1y=282 + end + end + if(小王1状态=="活")and(小王包围盒1:检测_点(子弹坐标x,子弹坐标y))then + 小王血1=小王血1-1 + 子弹坐标x=主角坐标x+引擎:取随机整数(-25,25) + 子弹坐标y=主角坐标y-50 + end + if(小王血1<0)and(小王1状态=="活")then + 小王1状态="死" + 小王动画1:置颜色(ARGB(0,0,0,0)) + 游戏进度=游戏进度+10 + end + + 小王动画2:显示(650,250) + 小王包围盒2:置位置(618,218) + if(小王2状态=="活")then + 小王子弹2:显示(小王子弹2x,小王子弹2y) + if(小王子弹2x>0)and(小王子弹2x<800)and(小王子弹2y<600)then + 小王子弹2y=小王子弹2y+3 + if(小王子弹2x>主角坐标x)then + 小王子弹2x=小王子弹2x-2 + else + 小王子弹2x=小王子弹2x+2 + end + else + 小王子弹2x=650 + 小王子弹2y=282 + end + if(主角包围盒:检测_点(小王子弹2x,小王子弹2y))then + 血=血-20 + 小王子弹2x=150 + 小王子弹2y=282 + end + end + + if(小王2状态=="活")and(小王包围盒2:检测_点(子弹坐标x,子弹坐标y))then + 小王血2=小王血2-1 + 子弹坐标x=主角坐标x+引擎:取随机整数(-25,25) + 子弹坐标y=主角坐标y-50 + end + if(小王血2<=0)and(小王2状态=="活")then + 小王2状态="死" + 小王动画2:置颜色(ARGB(0,0,0,0)) + 游戏进度=游戏进度+10 + end + + if(小王血1<=0)and(小王血2<=0)then + 大王子弹:显示_高级(大王子弹x,大王子弹y,0,4,4) + 大王子弹包围盒:置位置(大王子弹x-50,大王子弹y-50) + if(大王子弹x>0)and(大王子弹x<800)and(大王子弹y<600)then + 大王子弹y=大王子弹y+4 + if(大王子弹x>主角坐标x)then + 大王子弹x=大王子弹x-3 + else + 大王子弹x=大王子弹x+3 + end + else + 大王子弹x=400 + 大王子弹y=200 + end + if(引擎:包围盒碰撞检测(大王子弹包围盒,主角包围盒))then + 血=血-25 + 大王子弹x=400 + 大王子弹y=200 + end + if(引擎:包围盒碰撞检测(大王包围盒,主角包围盒))then + 血=血-50 + end + if(大王包围盒:检测_点(子弹坐标x,子弹坐标y))then + 大王血=大王血-1 + 子弹坐标x=主角坐标x+引擎:取随机整数(-25,25) + 子弹坐标y=主角坐标y-50 + if(大王血<0)then + 游戏进度=游戏进度+50 + + end + end + + end + end + end + if(游戏进度>200)then + 文字:显示(275,300,"恭喜通关!!!") + end + end + + if(血>0)then + 子弹精灵1:显示(子弹坐标x,子弹坐标y) + if(子弹坐标y<0)then + 子弹坐标x=主角坐标x+引擎:取随机整数(-25,25) + 子弹坐标y=主角坐标y-50 + else + 子弹坐标y=子弹坐标y-15 + end + end + + if(进度==3000)then + 大招精灵:显示(16,16) + 文字:显示(0,40,"大招就绪") + 文字:显示(0,80,"按空格释放") + if(引擎:取按键事件(键_空格))then + for n=1,敌人数量1 do + 敌人1[n].状态="死" + end + for n=1,敌人数量2 do + 敌人2[n].状态="死" + end + for n=1,敌人数量3 do + 敌人3[n].状态="死" + end + if(血<50)then + 血=75 + end + 进度=0 + end + end + + + + + + 文字:显示(700,0,游戏进度*10) + + 渲染结束() + return false + end + + + + + + + + + +--=============================================================================== +-- ■ 网络数据处理() +--=============================================================================== +function 网络数据处理 (命令,参数1,参数2,附加) + + +end + + + + +--=============================================================================-- +-- ■ 网络连接断开() +--=============================================================================-- +function 网络连接断开 () + + +end + + + +--=============================================================================== +-- ■ 屏幕获得焦点() +--=============================================================================== +function 屏幕获得焦点 () + + + return false +end + + + +--=============================================================================== +-- ■ 屏幕失去焦点() +--=============================================================================== +function 屏幕失去焦点 () + + + return false +end + + + +--=============================================================================== +-- ■ 屏幕关闭() +--=============================================================================== +function 屏幕关闭 () + + + + return true +end + + + +--=============================================================================== +-- ■ 渲染区保护() +--=============================================================================== +function 渲染区保护 () + + + return false +end + + + + + + + + -- Gitee From 8563c4516bd5a77501a148776517939f165f9b96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E6=B0=B4?= <1494909107@qq.com> Date: Tue, 18 Jul 2023 13:25:45 +0000 Subject: [PATCH 05/12] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=20lua/Yuns494?= =?UTF-8?q?9=20=E4=B8=BA=20lua/Yuns4949=E7=9A=84=E5=9E=83=E5=9C=BE?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E5=8F=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...1\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "lua/Yuns4949/\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" => "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" (100%) diff --git "a/lua/Yuns4949/\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" "b/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" similarity index 100% rename from "lua/Yuns4949/\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" rename to "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" -- Gitee From eca766da752b6fbcc9394a2ac42f3a2e001770b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E6=B0=B4?= <1494909107@qq.com> Date: Tue, 18 Jul 2023 13:30:06 +0000 Subject: [PATCH 06/12] =?UTF-8?q?add=20lua/Yuns4949=E7=9A=84=E5=9E=83?= =?UTF-8?q?=E5=9C=BE=E6=B8=B8=E6=88=8F=E5=8F=B2/=E5=90=8D=E5=AD=97?= =?UTF-8?q?=E5=8F=AB=E9=99=8D=E9=AD=94=E8=B7=AF=E7=9A=84=E6=B8=B8=E6=88=8F?= =?UTF-8?q?.lua.=20=E6=B7=BB=E5=8A=A0=E9=99=8D=E9=AD=94=E8=B7=AF.lua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 云水 <1494909107@qq.com> --- ...7\347\232\204\346\270\270\346\210\217.lua" | 3668 +++++++++++++++++ 1 file changed, 3668 insertions(+) create mode 100644 "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/\345\220\215\345\255\227\345\217\253\351\231\215\351\255\224\350\267\257\347\232\204\346\270\270\346\210\217.lua" diff --git "a/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/\345\220\215\345\255\227\345\217\253\351\231\215\351\255\224\350\267\257\347\232\204\346\270\270\346\210\217.lua" "b/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/\345\220\215\345\255\227\345\217\253\351\231\215\351\255\224\350\267\257\347\232\204\346\270\270\346\210\217.lua" new file mode 100644 index 0000000..3ceb792 --- /dev/null +++ "b/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/\345\220\215\345\255\227\345\217\253\351\231\215\351\255\224\350\267\257\347\232\204\346\270\270\346\210\217.lua" @@ -0,0 +1,3668 @@ +--=============================================================================-- +-- 接上回: +-- 写出第一个游戏之后,我又用同样的水平写出来好多个奇怪的鬼东西 +-- 降魔路 -- 能运行,第一次有声音,但没法玩 +--=============================================================================-- + + +--=============================================================================-- +-- ■ 加载运行库 +--=============================================================================-- +require "Lib/engine" + + +--=============================================================================== +-- ■ 初始化屏幕 +--=============================================================================== +引擎 = D2D_引擎.创建("降魔路--*****",60,800,600,true,true,"Dat/2457331_222715124000_2.ico") + +文字= D2D_文字.创建("宋体",22,false,false,true) +文字:置颜色(颜色_黑) +字符组 = 分割为字符组( +[[ + 天地初开,清气还未上升,浊气还未下降。茫茫混沌中,天地交 +际之地,有一个地方,虽不富裕,却也生机勃勃,只是,不知何时何 +处…… + 这里有人离奇死亡…… + 这里有人莫名失踪…… + 人丁减少,民不聊生…… + 国王万分焦急。他派出二十万大军前去搜查,不过,大军浩浩荡荡 +地开出城,眨眼间又接到撤回的命令。又有人失踪了,失踪的还不是一 +般人! + 谁? + 公主,国王唯一的女儿! + 有大臣提议在全国征召勇士,但出发的勇士们个个杳无音信…… + 我们的故事,正从这里开始…………………… + + 记得看下操作说明哦! ………… +]] +) +字符组2= 分割为字符组( +[[ + 到此为止,那些谜团终于真相大白了,是吗? + 国王说:“什么?那个侍卫不是在去年的一场战争中牺牲了吗!” + 故事好像越来越复杂了! + 征途还在脚下! ……………… + +]] +) +计时器 = 0 +当前计次 = 0 +当前文本 = "" +当前计次2 = 0 +当前文本2 = "" +间隔时间 = 0.1 + +情节=0 +情节计时=0 +情节系统="否" +弧度=0 + +暂停="否" +音量=80 +过度音效= D2D_音效.创建("Dat/419.mp3") + +攻击音效1 = D2D_音效.创建("Dat/步.wav") +攻击音效2 = D2D_音效.创建("Dat/弓.wav") +攻击音效3 = D2D_音效.创建("Dat/机枪.ogg") + +大招音效1=D2D_音效.创建("Dat/发射音效.ogg") +大招音效2=D2D_音效.创建("Dat/smzy_2015121103.mp3") + +大招音效3=D2D_音效.创建("Dat/收格子.wav") + +背景音效1 = D2D_音效.创建("Dat/欢乐A.mp3") +背景音效1:播放_高级(音量,true) + +恭喜图片=引擎:载入图片("Dat/紫霞蕴.jpg") +初始图片=引擎:载入图片("Dat/18b802f0eb835f7e-68820d9248233340-994b34ca56b6285e248735f89dd76c0b.jpg") +龙图片=引擎:载入图片("Dat/龙.png") +闪电图片=引擎:载入图片("Dat/点.png") +卷轴底图片=引擎:载入图片("Dat/卷轴底.png") +卷轴图片=引擎:载入图片("Dat/aa48140b4cf08ccd-23c028ba21e0bb1a-8a1fd4f96dfabce01a47e2df70ddcac9.png") +雪山图片=引擎:载入图片("Dat/30c40e020f63f81f-c00171587126b6cf-ed0849fa20557d56862ef7d936469775.jpg") +动画框1图片=引擎:载入图片("Dat/对话框1.png") +动画框2图片=引擎:载入图片("Dat/动画框2.png") +动画框3图片=引擎:载入图片("Dat/hero_.png") +场景图片=引擎:载入图片("Dat/073dd602d5871102-a27e23a56d270ab0-05c31b43040b30226930d63b24c1138b.jpg") +支付图片2=引擎:载入图片("Dat/2457.jpg") +支付图片1=引擎:载入图片("Dat/d7036c9a17f5fda.jpg") +爆炸图片=引擎:载入图片("Dat/爆炸.png") +呐喊图片2=引擎:载入图片("Dat/无2.png") +呐喊图片=引擎:载入图片("Dat/无1.png") +暂停图片=引擎:载入图片("Dat/6fc09a0598c20432-2d5cb6efb416b485-f07da9417f42cbbaa477ec320565121d.jpg") +大招m=引擎:载入图片("Dat/d328ab8f8bcf605.png") +准心图片=引擎:载入图片("Dat/crosshairs1.png") +方大招图片=引擎:载入图片("Dat/1956116azztqsqe7a49.png") +大招图片=引擎:载入图片("Dat/钱!.png") +升级图片=引擎:载入图片("Dat/升级.png") +领奖=引擎:载入图片("Dat/领奖.png") +战幕1=引擎:载入图片("Dat/2457331_222715124000_2.jpg") +战幕2=引擎:载入图片("Dat/2457331_222715124000_21.jpg") +战幕3=引擎:载入图片("Dat/2457331_222715124000_3.png") +对话图片=引擎:载入图片("Dat/对话.png") +小兵图片=引擎:载入图片("Dat/小兵.png") +行走图片=引擎:载入图片("Dat/地图走.png") +旗图片=引擎:载入图片("Dat/旗.png") +征兵图片=引擎:载入图片("Dat/征兵.png") +提示图片=引擎:载入图片("Dat/提示.png") +查询图片=引擎:载入图片("Dat/查询.png") +开盘=引擎:载入图片("Dat/d7036c9a17f5fda2-db5a79f8c74d918b-f8e3392190210f7ba.jpg") +道士=引擎:载入图片("Dat/d7036c9a17f5fda2-db5a79f8c74d918b-f8e3392190210f7bad9c73d6469e7885.jpg") +主角信息图片=引擎:载入图片("Dat/图片4.png") +法条=引擎:载入图片("Dat/法条.png") +条=引擎:载入图片("Dat/条.png") +主角加点=引擎:载入图片("Dat/无标题.png") +地图=引擎:载入图片("Dat/地图.png") +城=引擎:载入图片("Dat/ac75323d6b6de243-1bbee0af2ef8f8b9-0de67ff328490a3.jpg") +战场=引擎:载入图片("Dat/暗号.jpg") +塔=引擎:载入图片("Dat/塔.png") +绝塔=引擎:载入图片("Dat/图片5.png") +塔内=引擎:载入图片("Dat/无标.png") +己方士兵=引擎:载入图片("Dat/图片2.png") +敌方士兵=引擎:载入图片("Dat/图片1.png") +敌方士兵2=引擎:载入图片("Dat/地111.png") +主角=引擎:载入图片("Dat/1956116azztqsqe7a49abe.png") +女主角=引擎:载入图片("Dat/hero_b_h60.png") +敌boss=引擎:载入图片("Dat/图片3.png") + +暂停计时=20 + +游戏状态="初始" +小状态="" +提示="否" + +恭喜精灵=D2D_精灵.创建 (恭喜图片, 0,0,250,167) + +初始精灵=D2D_精灵.创建 (初始图片, 0,0,500,332) +雪山=D2D_精灵.创建 (雪山图片, 0,0,1000,600) + +卷轴左=D2D_精灵.创建 (卷轴图片, 0,0,70,482) +卷轴右=D2D_精灵.创建 (卷轴图片,650,0,70,482) +卷轴=D2D_精灵.创建 (卷轴底图片, 70,0,580,482) +卷轴字=D2D_精灵.创建 (卷轴图片, 70,0,580,482) +卷轴右x=80 +卷轴透明=0 + +闪电动画=D2D_动画.创建 (闪电图片,4,8, 0, 0,138 ,416) +闪电动画:播放() +龙精灵=D2D_精灵.创建 (龙图片, 0,0,360,354) +龙精灵:置中心点(180,177) +龙透明=0 + +对话框1=D2D_精灵.创建 (动画框1图片, 0,0,601,92) +对话框2=D2D_精灵.创建 (动画框2图片, 0,0,603,104) +对话框3=D2D_精灵.创建 (动画框3图片, 0,0, 604,104) + +支付精灵1=D2D_精灵.创建 (支付图片1, 0,0, 800,600) +支付精灵2=D2D_精灵.创建 (支付图片2, 0,0, 800,802) +支付精灵2:置中心点(400,401) +支付按键=D2D_包围盒.创建(600,480,200,50) + +场景精灵=D2D_精灵.创建 (场景图片, 0,0, 3000,1006) +场景x=0 + + +爆炸动画= D2D_动画.创建 (爆炸图片,11,11, 0, 0,56 ,56) +爆炸动画:播放() +爆炸动画:置中心点(28,28) + +鬼塔精灵=D2D_精灵.创建 (绝塔, 0, 0,324,388) +塔精灵=D2D_精灵.创建 (塔, 0, 0,324,388) +塔内精灵=D2D_精灵.创建 (塔内, 0, 0,800,600) +呐喊精灵=D2D_精灵.创建 (呐喊图片, 0, 0,376,292) +呐喊精灵2=D2D_精灵.创建 (呐喊图片2, 0, 0,376,292) +呐喊计时=10 + +暂停精灵=D2D_精灵.创建 (暂停图片, 0, 0,643,516) + +行走精灵=D2D_精灵.创建 (行走图片, 0, 0,800, 600) +行走参数=200 +意外=0 +v=30 +侦查兵=D2D_精灵.创建 (小兵图片, 0, 0,482,482) +侦查兵x=0 +侦查兵y=250 +对话精灵=D2D_精灵.创建 (对话图片, 0, 0,404,162) + +提示内容="" +提示精灵=D2D_精灵.创建 (提示图片, 0, 0, 302, 165) +提示确认=D2D_包围盒.创建(290,320,110,35) +提示文字=D2D_文字.创建("宋体",20,false,false,false) +提示文字:置颜色(颜色_黑) + +征兵精灵=D2D_精灵.创建 (征兵图片, 0, 0, 269, 102) +征兵结束=D2D_包围盒.创建(318,107,50,20) +征兵1=D2D_包围盒.创建(110,107,120,20) +征兵2=D2D_包围盒.创建(110,137,120,20) +征兵3=D2D_包围盒.创建(110,167,120,20) + +升级精灵=D2D_精灵.创建 (升级图片, 0, 0, 269, 102) +升级结束=D2D_包围盒.创建(318,107,50,20) +升级1=D2D_包围盒.创建(110,107,120,20) +升级2=D2D_包围盒.创建(110,137,120,20) +升级3=D2D_包围盒.创建(110,167,120,20) +步兵升级=0 +弓兵升级=0 +机枪升级=0 + +查询精灵=D2D_精灵.创建 (查询图片, 0, 0, 402, 312) +查询结束=D2D_包围盒.创建(443,113,50,20) +加点按键=D2D_包围盒.创建(443,313,50,20) +阅兵按键=D2D_包围盒.创建(700,50,50,20) +阅兵结束按键=D2D_包围盒.创建(700,20,60,20) +阅兵进度=0 +阅兵="否" + +加点按键1=D2D_包围盒.创建(420,260,50,50) +加点按键2=D2D_包围盒.创建(420,325,50,50) +加点按键3=D2D_包围盒.创建(420,385,50,50) +返回按键=D2D_包围盒.创建(415,208,80,35) +剩余点数=0 + +开始精灵=D2D_精灵.创建 (道士, 0, 0, 800, 600) +新开按键= D2D_包围盒.创建(75,493,250,30) +继续按键=D2D_包围盒.创建(460,490,270,30) +小文字=D2D_文字.创建("宋体",12,false,false,false) +小文字:置颜色(颜色_黑) +开盘精灵=D2D_精灵.创建 (开盘, 0, 0, 800, 600) +姓名输入= D2D_输入框.创建(130,颜色_黑,"宋体",40,false,false,false,20,true) +开始进度=0 +开盘继续按键=D2D_包围盒.创建(100,400,250,30) + +女主角精灵=D2D_精灵.创建 (女主角, 0, 0,146, 170) + +主角站立动画= D2D_动画.创建 (主角, 2, 4, 0, 0,64 , 64) +主角站立动画:播放() +主角站立动画:置中心点 (32,32) +主角行走动画= D2D_动画.创建 (主角, 2, 4, 128, 0,64 , 64) +主角行走动画:播放() +主角行走动画:置中心点 (32,32) +主角攻击动画= D2D_动画.创建 (主角, 4, 4, 128, 0,64 , 64) +主角攻击动画:播放() +主角攻击动画:置中心点 (32,32) +主角大招动画= D2D_动画.创建 (方大招图片, 2, 8, 0, 0,64.5 , 50) +主角大招动画:播放() +主角大招动画:置中心点 (32,32) +主角包围盒=D2D_包围盒.创建(0,0,64,64) +主角攻击包围盒=D2D_包围盒.创建(0,0,64,64) +主角信息={ +开始攻击="否", +类型="", +状态="行走", +方向=1, +所在地="地点1", +银两=100000, +攻击=0, +防御=0, +姓名="", +x=200, +y=375, +臂力=10, +足力=10, +心力=10, +步兵=0, +步兵等级=1, +弓兵=0, +弓兵等级=1, +机枪=0, +机枪等级=1, +血总=1, +血现=1, +法总=1, +法现=1, +等级=1, +经验现=0, +经验总=0 +} +大招2={} +for m=1,10 do +大招2[m]={精灵=D2D_精灵.创建 (大招m, 0, 0,128, 128), +x=0, +y=0, +增量=800 +} +end +准星精灵=D2D_精灵.创建 (准心图片, 0, 0, 56, 56) +准星精灵:置中心点(28,28) +主角大招=D2D_精灵.创建 (大招图片, 0, 0, 258, 180) +主角大招:置中心点(129,160) +大招包围盒=D2D_包围盒.创建(0,0,300,200) +主角信息精灵= D2D_精灵.创建 (主角信息图片, 0, 0, 602, 174) +血条精灵= D2D_精灵.创建 (条, 0, 0, 100, 10) +法条精灵= D2D_精灵.创建 (法条, 0, 0, 100, 10) +加点精灵= D2D_精灵.创建 (主角加点, 0, 0, 298, 295) +查询按键=D2D_包围盒.创建(20,20,50,50) + +红步兵站立精灵=D2D_精灵.创建 (己方士兵, 0, 0, 50,50) +红步兵站立精灵:置中心点(25,25) +红步兵行走动画= D2D_动画.创建 (己方士兵,2, 4, 0, 0,50 , 50) +红步兵行走动画:置中心点(25,25) +红步兵行走动画:播放() +红步兵攻击动画=D2D_动画.创建 (己方士兵,2,2, 100, 0,50 , 50) +红步兵攻击动画:置中心点(25,25) +红步兵攻击动画:播放() +红步兵阅兵=D2D_包围盒.创建(0,0,20,20) +红步兵包围盒=D2D_包围盒.创建(0,0,50,50) +红步兵组={} + +红弓兵站立精灵=D2D_精灵.创建 (己方士兵, 0, 50, 50,50) +红弓兵站立精灵:置中心点(25,25) +红弓兵行走动画= D2D_动画.创建 (己方士兵,2, 4, 0, 50,50 , 50) +红弓兵行走动画:置中心点(25,25) +红弓兵行走动画:播放() +红弓兵攻击动画=D2D_动画.创建 (己方士兵,2, 2, 100, 50,50 , 50) +红弓兵攻击动画:置中心点(25,25) +红弓兵攻击动画:播放() +红弓兵阅兵=D2D_包围盒.创建(0,0,20,20) +红弓兵包围盒=D2D_包围盒.创建(0,0,50,50) +红弓兵组={} + +红机枪站立精灵=D2D_精灵.创建 (己方士兵, 0,101, 50,50) +红机枪站立精灵:置中心点(25,25) +红机枪行走动画= D2D_动画.创建 (己方士兵,2, 4, 0, 101,50 , 50) +红机枪行走动画:置中心点(25,25) +红机枪行走动画:播放() +红机枪攻击动画=D2D_动画.创建 (己方士兵,2, 8, 101, 100,50 , 50) +红机枪攻击动画:置中心点(25,25) +红机枪攻击动画:播放() +红机枪阅兵=D2D_包围盒.创建(0,0,20,20) +红机枪包围盒=D2D_包围盒.创建(0,0,50,50) +红机枪组={} + + +蓝步兵站立精灵=D2D_精灵.创建 (敌方士兵, 0, 0, 50,50) +蓝步兵站立精灵:置中心点(25,25) +蓝步兵行走动画= D2D_动画.创建 (敌方士兵,2, 4, 0, 0,50 , 50) +蓝步兵行走动画:置中心点(25,25) +蓝步兵行走动画:播放() +蓝步兵攻击动画=D2D_动画.创建 (敌方士兵,2, 2, 100, 0,50 , 50) +蓝步兵攻击动画:置中心点(25,25) +蓝步兵攻击动画:播放() +蓝步兵包围盒=D2D_包围盒.创建(0,0,50,50) +蓝步兵组={} + +蓝弓兵站立精灵=D2D_精灵.创建 (敌方士兵, 0, 50, 50,50) +蓝弓兵站立精灵:置中心点(25,25) +蓝弓兵行走动画= D2D_动画.创建 (敌方士兵,2, 4, 0, 50,50 , 55) +蓝弓兵行走动画:置中心点(25,25) +蓝弓兵行走动画:播放() +蓝弓兵攻击动画=D2D_动画.创建 (敌方士兵,2, 2, 100, 55,50 , 55) +蓝弓兵攻击动画:置中心点(25,25) +蓝弓兵攻击动画:播放() +蓝弓兵包围盒=D2D_包围盒.创建(0,0,50,50) +蓝弓兵组={} + +蓝机枪站立精灵=D2D_精灵.创建 (敌方士兵, 0,102, 50,50) +蓝机枪站立精灵:置中心点(25,25) +蓝机枪行走动画= D2D_动画.创建 (敌方士兵,2, 4, 0, 105,50 , 50) +蓝机枪行走动画:置中心点(25,25) +蓝机枪行走动画:播放() +蓝机枪攻击动画=D2D_动画.创建 (敌方士兵,2, 8, 100, 105,50 , 50) +蓝机枪攻击动画:置中心点(25,25) +蓝机枪攻击动画:播放() +蓝机枪包围盒=D2D_包围盒.创建(0,0,50,50) +蓝机枪组={} + +鬼站立精灵=D2D_精灵.创建 (敌boss, 0,0, 50,50) +鬼精灵x=800 +鬼精灵y=400 +鬼行走动画= D2D_动画.创建 (敌boss,2, 4, 0, 0,50 , 50) +鬼攻击动画=D2D_动画.创建 (敌boss,2, 4, 100, 0,50 , 50) +鬼大招动画=D2D_动画.创建 (敌boss,3, 6, 200, 0,50 , 50) +鬼大招=D2D_精灵.创建 (敌boss, 369,20, 20,20) +鬼站立精灵:置中心点(25,25) +鬼行走动画:置中心点(25,25) +鬼行走动画:播放() +鬼攻击动画:置中心点(25,25) +鬼攻击动画:播放() +鬼大招动画:置中心点(25,25) +鬼大招动画:播放() +鬼大招:置中心点(5,5) +陨石={} +鬼={} + +红箭组={} +蓝箭组={} +子弹精灵=D2D_精灵.创建 (己方士兵,4,155,30,10) +子弹精灵:置中心点(4,4) +红子弹组={} +蓝子弹组={} +箭精灵=D2D_精灵.创建 (敌方士兵,150,155, 60,20) +箭精灵:置中心点(8,10) +红枪组={} +蓝枪组={} +枪精灵=D2D_精灵.创建 (敌方士兵,80,154, 45,15) +枪精灵:置中心点(30,7) +伤害精灵=D2D_精灵.创建 (敌方士兵,47,151, 20,20) +伤害精灵:置中心点(10,10) + +战争="否" +战争进度=0 +战争经验=0 +战争银两=0 +战场精灵=D2D_精灵.创建 (战场, 0, 0, 800, 400) +战幕左=D2D_精灵.创建 (战幕1, 0, 0, 301,601) +战幕左x=102 +战幕左y=-2 +战幕右=D2D_精灵.创建 (战幕2, 3, 0,297, 606) +战幕右x=400 +战幕右y=0 +战幕中=D2D_精灵.创建 (战幕3, 0, 0, 322, 324) +战幕中:置中心点(161,162) +战幕中弧度=0 +领奖精灵=D2D_精灵.创建 (领奖, 0, 0, 140, 80) +领奖按键=D2D_包围盒.创建(330,480,140,80) + +城市= D2D_精灵.创建 (城, 0, 0, 800, 600) +人物包围盒1=D2D_包围盒.创建(10,400,120,200) +人物包围盒2=D2D_包围盒.创建(140,400,160,200) +人物包围盒3=D2D_包围盒.创建(302,380,170,200) +人物包围盒4=D2D_包围盒.创建(480,380,170,200) +人物包围盒5=D2D_包围盒.创建(660,380,120,200) +对话=D2D_文字.创建("楷体",40,true,false,false) +对话:置颜色(颜色_黑) +城市等级=1 +步兵参数=0 +弓兵参数=0 +机枪参数=0 +鬼参数=0 + +地图精灵=D2D_精灵.创建( 地图, 0, 0,800, 600) +旗=D2D_精灵.创建(旗图片, 0, 0,98,69) +旗:置中心点(30,61) +旗x=0 +旗y=0 +地点1=D2D_包围盒.创建(113,436,20,20) +地点2=D2D_包围盒.创建(144,355,20,20) +地点3=D2D_包围盒.创建(203,285,20,20) +地点4=D2D_包围盒.创建(272,200,20,20) +地点5=D2D_包围盒.创建(360,155,20,20) +地点6=D2D_包围盒.创建(442,134,20,20) +地点7=D2D_包围盒.创建(533,111,20,20) +地点8=D2D_包围盒.创建(588,179,20,20) +地点9=D2D_包围盒.创建(557,217,20,20) +地点10=D2D_包围盒.创建(513,257,20,20) +地点11=D2D_包围盒.创建(458,317,20,20) +地点12=D2D_包围盒.创建(450,375,20,20) +地点13=D2D_包围盒.创建(505,409,20,20) +地点14=D2D_包围盒.创建(563,410,20,20) +地点15=D2D_包围盒.创建(615,409,20,20) +地点16=D2D_包围盒.创建(752,472,20,20) +地点17=D2D_包围盒.创建(244,358,20,20) +地点18=D2D_包围盒.创建(295,296,20,20) +地点19=D2D_包围盒.创建(403,196,20,20) +地点20=D2D_包围盒.创建(363,353,20,20) + +存档="否" + +剿匪="否" +剿匪进度=-1 + +大招目标x=0 +大招目标y=0 + +目的地={x=0,y=0} + +计时=0 + +虚拟领导x=0 +虚拟领导y=0 +虚拟领导方向=-1 +虚拟领导攻击="否" +虚拟领导计时=56 +虚拟领导反计时=0 +--=============================================================================== +-- ■ 屏幕逻辑() +--=============================================================================== +function 屏幕逻辑 () +鼠标x,鼠标y= 引擎:取鼠标坐标() +时间=引擎:取最后帧时间() +主角站立动画:更新(时间) +主角行走动画:更新(时间) +主角攻击动画:更新(时间) +主角大招动画:更新(时间) +红步兵行走动画:更新(时间) +红步兵攻击动画:更新(时间) +红弓兵行走动画:更新(时间) +红弓兵攻击动画:更新(时间) +红机枪行走动画:更新(时间) +红机枪攻击动画:更新(时间) +蓝步兵行走动画:更新(时间) +蓝步兵攻击动画:更新(时间) +蓝弓兵行走动画:更新(时间) +蓝弓兵攻击动画:更新(时间) +蓝机枪行走动画:更新(时间) +蓝机枪攻击动画:更新(时间) +鬼行走动画:更新(时间) +鬼攻击动画:更新(时间) +鬼大招动画:更新(时间) +姓名输入:更新(时间) +爆炸动画:更新(时间) +闪电动画:更新(时间) +计时器 =计时器 + 时间 + + + +if(引擎:取按键按下(键_键盘下)) then + if( 背景音效1:检测播放() ) then + 引擎:暂停所有音效() + else + 引擎:继续所有音效() + end +end +引擎:置全局音量(音量) +if(引擎:取按键事件(键_键盘左))then + if(音量>0)then + 音量=音量-1 + else + 音量=0 + end + end +if(引擎:取按键事件(键_键盘右))then + if(音量<100)then + 音量=音量+1 + else + 音量=100 + end + end + + +if(主角信息.所在地=="地点1")then + 旗x=117 + 旗y=440 + 城市等级=情节 +end +if(主角信息.所在地=="地点2")then + 旗x=149 + 旗y=360 + 城市等级=情节 +end +if(主角信息.所在地=="地点3")then + 旗x=208 + 旗y=290 + 城市等级=情节 +end +if(主角信息.所在地=="地点4")then + 旗x=278 + 旗y=205 + 城市等级=情节 +end +if(主角信息.所在地=="地点5")then + 旗x=365 + 旗y=160 + 城市等级=情节 +end +if(主角信息.所在地=="地点6")then + 旗x=447 + 旗y=139 + 城市等级=情节 +end +if(主角信息.所在地=="地点7")then + 旗x=538 + 旗y=116 + 城市等级=情节 +end +if(主角信息.所在地=="地点8")then + 旗x=592 + 旗y=185 + 城市等级=情节 +end +if(主角信息.所在地=="地点9")then + 旗x=562 + 旗y=222 + 城市等级=情节 +end +if(主角信息.所在地=="地点10")then + 旗x=518 + 旗y=262 + 城市等级=情节 +end +if(主角信息.所在地=="地点11")then + 旗x=463 + 旗y=322 + 城市等级=情节 +end +if(主角信息.所在地=="地点12")then + 旗x=455 + 旗y=380 + 城市等级=情节 +end +if(主角信息.所在地=="地点13")then + 旗x=510 + 旗y=415 + 城市等级=情节 +end +if(主角信息.所在地=="地点14")then + 旗x=568 + 旗y=415 + 城市等级=情节 +end +if(主角信息.所在地=="地点15")then + 旗x=620 + 旗y=415 + 城市等级=情节 +end +if(主角信息.所在地=="地点16")then + 旗x=758 + 旗y=478 + 城市等级=情节 +end +if(主角信息.所在地=="地点17")then + 旗x=249 + 旗y=363 + 城市等级=情节 +end +if(主角信息.所在地=="地点18")then + 旗x=300 + 旗y=300 + 城市等级=情节 +end +if(主角信息.所在地=="地点19")then + 旗x=408 + 旗y=200 + 城市等级=情节 +end +if(主角信息.所在地=="地点20")then + 旗x=368 + 旗y=358 + 城市等级=情节 +end + +主角信息.攻击=主角信息.臂力*5+主角信息.心力*3+主角信息.足力*2 +主角信息.防御=主角信息.臂力*3+主角信息.心力*2+主角信息.足力*5 +主角信息.血总=(主角信息.臂力*2+主角信息.心力*6+主角信息.足力*2)*20 +主角信息.法总=主角信息.心力*20 +主角信息.经验总=(主角信息.等级^3+10)*10 +主角信息.步兵=table.getn(红步兵组) +主角信息.弓兵=table.getn(红弓兵组) +主角信息.机枪=table.getn(红机枪组) + +步兵升级=主角信息.步兵等级^2*500 +弓兵升级=主角信息.弓兵等级^3*500 +机枪升级=主角信息.机枪等级^3*800 + + return false +end + + + + +--=============================================================================== +-- ■ 屏幕渲染() +--=============================================================================== +function 屏幕渲染 () + 渲染开始() + 清屏(ARGB(255,128,128,128)) + + if(暂停=="否")then + + if(计时器 > 间隔时间)and(游戏状态=="初始")then + if(当前计次 < table.getn(字符组)) then + 当前计次 = 当前计次 + 1 + 当前文本 = 当前文本 .. 字符组 [当前计次] + end + 计时器 = 0 +end +if(当前计次 == table.getn(字符组))then + 游戏状态="开始" + 当前计次=0 +end +if(计时器 > 间隔时间)and(游戏状态=="胜利")then + if(当前计次 < table.getn(字符组2)) then + 当前计次2 = 当前计次2 + 1 + 当前文本2 = 当前文本2 .. 字符组2 [当前计次2] + end + 计时器 = 0 +end + +if(当前计次2 == table.getn(字符组2))then + 游戏状态="开始" + 当前计次2=0 + 战争="否" + 小状态="" + 主角信息.所在地="" + 情节=0 + 战争进度=0 + 步兵参数=0 + 弓兵参数=0 + 机枪参数=0 + for n=1,table.getn(蓝步兵组) do + table.remove(蓝步兵组,n) + end + for n=1,table.getn(蓝弓兵组) do + table.remove(蓝弓兵组,n) + end + for n=1,table.getn(蓝机枪组) do + table.remove(蓝机枪组,n) + end + + for n=1,table.getn(红步兵组) do + table.remove(红步兵组,n) + end + for n=1,table.getn(红弓兵组) do + table.remove(红弓兵组,n) + end + for n=1,table.getn(红机枪组) do + table.remove(红机枪组,n) + end +end + + if(游戏状态=="初始")then + 初始精灵:显示_高级(0,0,0,1.6,600/332) + 文字:显示(30,150,当前文本) + if(引擎:取按键按下(键_空格))then + 游戏状态="开始" + end + end + + + if(游戏状态=="开始")then + 开始精灵:显示() + if(新开按键:检测_点(鼠标x,鼠标y))and(开始进度==0)then + 新开按键:显示() + if(引擎:取按键按下(键_鼠标左))then + 游戏状态="开盘" + end + end + + if(继续按键:检测_点(鼠标x,鼠标y))and(开始进度==0)then + 继续按键:显示() + if(引擎:取按键按下(键_鼠标左))then + 开始进度=3 + end + end + if(开始进度==3)then + 对话:显示(200,350,"请输入存档密码,按回车继续") + 姓名输入:密码模式(true) + 姓名输入:显示(250,400) + if(引擎:取按键按下(键_回车))then + 姓名输入:清空() + 开始进度=4 + end + if(开始进度==4)then + 姓名输入:密码模式(false) + if(姓名输入:取文本()==读配置项("Dat/游戏配置.ini","存档","密码"))then + 主角信息.姓名=读配置项("Dat/游戏配置.ini","存档","姓名") + 情节=tonumber(读配置项("Dat/游戏配置.ini","存档","情节")) + 游戏状态=读配置项("Dat/游戏配置.ini","存档","游戏状态") + 主角信息.步兵等级=tonumber(读配置项("Dat/游戏配置.ini","存档","步兵等级")) + 主角信息.弓兵等级=tonumber(读配置项("Dat/游戏配置.ini","存档","弓兵等级")) + 主角信息.机枪等级=tonumber(读配置项("Dat/游戏配置.ini","存档","机枪等级")) + 主角信息.银两=tonumber(读配置项("Dat/游戏配置.ini","存档","银两")) + 主角信息.血现=tonumber(读配置项("Dat/游戏配置.ini","存档","血现")) + 主角信息.血总=tonumber(读配置项("Dat/游戏配置.ini","存档","血总")) + 主角信息.法总=tonumber(读配置项("Dat/游戏配置.ini","存档","法总")) + 剩余点数=tonumber(读配置项("Dat/游戏配置.ini","存档","剩余点数")) + 主角信息.所在地=读配置项("Dat/游戏配置.ini","存档","所在地") + 主角信息.等级=tonumber(读配置项("Dat/游戏配置.ini","存档","等级")) + 主角信息.臂力=tonumber(读配置项("Dat/游戏配置.ini","存档","臂力")) + 主角信息.足力=tonumber(读配置项("Dat/游戏配置.ini","存档","足力")) + 主角信息.心力=tonumber(读配置项("Dat/游戏配置.ini","存档","心力")) + else + 开始进度=0 + end + 开始进度=0 + end + end + end + if(游戏状态=="开盘")then + 开盘精灵:显示() + if(开始进度==0)then + 对话:显示(100,100,"让老夫给你算一卦!") + 对话:显示(100,400,"点击此处继续") + if(开盘继续按键:检测_点(鼠标x,鼠标y))then + if(引擎:取按键按下(键_鼠标左))then + 开始进度=开始进度+1 + end + end + end + if(开始进度==1)then + 对话:显示(100,100,"你叫个甚么名字?") + 对话:显示(100,200,"输入名字,点击此处继续") + 姓名输入:显示(100,140) + 开盘继续按键:置位置(100,200) + if(开盘继续按键:检测_点(鼠标x,鼠标y))then + if(引擎:取按键事件(键_鼠标左))then + if(姓名输入:取文本()=="")then + 提示内容="老哥,你没名字?" + 提示="是" + else + 姓名输入:清空() + 开始进度=开始进度+1 + 主角信息.姓名=姓名输入:取文本() + 开盘继续按键:置位置(100,300) + end + end + end + end + if(开始进度==2)then + 主角信息.等级=1 + 主角信息.臂力=5 + 主角信息.足力=5 + 主角信息.心力=5 + 主角信息.步兵=0 + 主角信息.弓兵=0 + 主角信息.机枪=0 + 主角信息.步兵等级=1 + 主角信息.弓兵等级=1 + 主角信息.机枪等级=1 + 主角信息.血总=(主角信息.臂力*1+主角信息.心力*8+主角信息.足力*1)*5 + 主角信息.法总=主角信息.心力*20 + 主角信息.银两=3000 + 剩余点数=剩余点数+15 + 所在地="地点1" + 开始进度=7 + end + + if(开始进度==7)then + 开盘精灵:显示() + 对话:显示(100,0,"想提高什么,老夫助你") + 对话:显示(100,300,"点击此处继续") + if(开盘继续按键:检测_点(鼠标x,鼠标y))and(引擎:取按键事件(键_鼠标左))then + 小状态="加点" + 开始进度=8 + 开盘继续按键:置位置(100,350) + end + end + if(开始进度==8)then + 开盘精灵:显示() + 对话:显示(100,0,"选好了吗,确定?") + 对话:显示(100,350,"点击此处继续") + if(开盘继续按键:检测_点(鼠标x,鼠标y))and(引擎:取按键事件(键_鼠标左))then + 开始进度=9 + 开盘继续按键:置位置(100,300) + 主角信息.血现=主角信息.血总 + 主角信息.法现=主角信息.法总 + end + end + if(开始进度==9)then + 开盘精灵:显示() + 对话:显示(100,0,"年轻人有大志!") + 对话:显示(100,50,"将来必成大器!") + 对话:显示(100,100,"老夫赠你叁仟银两!") + 对话:显示(100,150,"祝你成功!") + 对话:显示(100,200,"临行前,记得看下") + 对话:显示(100,250,"操作说明!再见!") + 对话:显示(100,300,"点击此处继续") + if(开盘继续按键:检测_点(鼠标x,鼠标y))and(引擎:取按键事件(键_鼠标左))then + 游戏状态="城市" + 主角信息.所在地="地点1" + 开始进度=0 + 开盘继续按键:置位置(100,400) + end + end + end + + if(游戏状态=="城市")and(战争=="否")and(阅兵=="否")and(存档=="否")and(小状态=="")and(情节>=1)then + + 城市:显示() + if(人物包围盒1:检测_点(鼠标x,鼠标y))then + 对话:显示(100,100,"咋!想和我干架是不?!!") + if(引擎:取按键按下(键_鼠标左))then + 过度音效:播放() + 战争="是" + 步兵参数=(引擎:取随机整数(2,4))*城市等级 + 弓兵参数=(引擎:取随机整数(1,3))*城市等级 + 机枪参数=(引擎:取随机整数(0,2))*城市等级 + for n=1,步兵参数 do + local 步兵={x=引擎:取随机整数(-200,200) + ,y=引擎:取随机整数(-100,100), + 攻击="否", + 血=400*城市等级, + 状态="" + } + table.insert(蓝步兵组,步兵) + end + for n=1,弓兵参数 do + local 弓兵={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=160, + 血=250*城市等级 + } + table.insert(蓝弓兵组,弓兵) + end + for n=1,机枪参数 do + local 机枪={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=15, + 血=600*城市等级, + 状态="" + } + table.insert(蓝机枪组,机枪) + end + end + end + if(人物包围盒2:检测_点(鼠标x,鼠标y))then + 对话:显示(100,100,"给弟兄们升准备吗?") + if(引擎:取按键按下(键_鼠标左))then + 小状态="升级" + end + end + if(人物包围盒3:检测_点(鼠标x,鼠标y))then + 对话:显示(100,100,"重金征拜勇士,剿土匪!") + if(引擎:取按键按下(键_鼠标左))then + 过度音效:播放() + 战争="是" + 剿匪="是" + 呐喊计时=10 + 剿匪进度=-1 + end + end + if(人物包围盒4:检测_点(鼠标x,鼠标y))then + 对话:显示(100,100,"老哥,要人手吗?") + if(引擎:取按键按下(键_鼠标左))then + 小状态="征兵" + end + end + if(人物包围盒5:检测_点(鼠标x,鼠标y))then + 对话:显示(100,100,"上路吗?祝你一路顺风!!") + if(引擎:取按键按下(键_鼠标左))then + 游戏状态="地图" + end + end + end + + if(游戏状态=="地图")and(战争=="否")and(阅兵=="否")and(小状态=="")then + 地图精灵:显示() + 旗:显示(旗x,旗y) + if(地点1:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点2")then + 小状态="行走" + 主角信息.所在地="地点1" + end + if(主角信息.所在地=="地点1")then + 游戏状态="城市" + end + end + if(地点2:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点1")or(主角信息.所在地=="地点3")then + 小状态="行走" + 主角信息.所在地="地点2" + end + end + if(地点3:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点2")or(主角信息.所在地=="地点4")then + 小状态="行走" + 主角信息.所在地="地点3" + end + end + if(地点4:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点3")or(主角信息.所在地=="地点5")or(主角信息.所在地=="地点17")then + 小状态="行走" + 主角信息.所在地="地点4" + end + if(主角信息.所在地=="地点4")then + 游戏状态="城市" + end + end + if(地点5:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点4")or(主角信息.所在地=="地点6")then + 小状态="行走" + 主角信息.所在地="地点5" + end + end + if(地点6:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点5")or(主角信息.所在地=="地点7")then + 小状态="行走" + 主角信息.所在地="地点6" + end + end + if(地点7:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点6")or(主角信息.所在地=="地点8")then + 小状态="行走" + 主角信息.所在地="地点7" + end + if(主角信息.所在地=="地点7")then + 游戏状态="城市" + end + end + if(地点8:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点7")or(主角信息.所在地=="地点9")then + 小状态="行走" + 主角信息.所在地="地点8" + end + end + if(地点9:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点8")or(主角信息.所在地=="地点10")then + 小状态="行走" + 主角信息.所在地="地点9" + end + end + if(地点10:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点9")or(主角信息.所在地=="地点11")then + 小状态="行走" + 主角信息.所在地="地点10" + end + end + if(地点11:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点1")or(主角信息.所在地=="地点12")then + 小状态="行走" + 主角信息.所在地="地点11" + end + end + if(地点12:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点11")or(主角信息.所在地=="地点13")then + 小状态="行走" + 主角信息.所在地="地点12" + end + if(主角信息.所在地=="地点12")then + 游戏状态="城市" + end + end + if(地点13:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点12")or(主角信息.所在地=="地点14")then + 小状态="行走" + 主角信息.所在地="地点13" + end + end + if(地点14:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点13")or(主角信息.所在地=="地点15")then + 小状态="行走" + 主角信息.所在地="地点14" + end + end + if(地点15:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点14")or(主角信息.所在地=="地点16")then + 小状态="行走" + 主角信息.所在地="地点15" + end + end + if(地点16:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点15")then + 小状态="行走" + 主角信息.所在地="地点16" + end + end + if(地点17:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点18")then + 小状态="行走" + 主角信息.所在地="地点17" + end + if(主角信息.所在地=="地点17")then + 游戏状态="城市" + end + end + if(地点18:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点17")or(主角信息.所在地=="地点19")or(主角信息.所在地=="地点4")then + if(情节>=5)then + 小状态="行走" + 主角信息.所在地="地点18" + else + 提示="是" + 提示内容="大事未成,岂能闲逛!" + end + end + end + if(地点19:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点18")or(主角信息.所在地=="地点20")then + 小状态="行走" + 主角信息.所在地="地点19" + end + end + if(地点20:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if(主角信息.所在地=="地点19")then + 小状态="行走" + 主角信息.所在地="地点20" + end + end + end + + if(小状态=="行走")and(战争=="否")and(阅兵=="否")then + if(行走参数>0)and(意外<=0)then + 行走参数=行走参数-1 + end + 行走精灵:显示() + if(行走参数<=0)and(意外<=0)then + 小状态="" + 行走参数=200 + end + if(行走参数<200)and(意外<=0)then + 对话:显示(450,200,"〇") + end + if(行走参数<160)and(意外<=0)then + 对话:显示(450,200,"〇 〇") + end + if(行走参数==100)and(意外<=0)then + 意外=引擎:取随机整数(-10,10) + end + if(行走参数<120)and(意外<=0)then + 对话:显示(450,200,"〇 〇 〇") + end + if(行走参数<80)and(意外<=0)then + 对话:显示(450,200,"〇 〇 〇 〇") + end + if(行走参数<40)and(意外<=0)then + 对话:显示(450,200,"〇 〇 〇 〇 〇") + end + if(主角信息.所在地=="地点1")or(主角信息.所在地=="地点4")or(主角信息.所在地=="地点7")or(主角信息.所在地=="地点12")or(主角信息.所在地=="地点17")then + 游戏状态="城市" + end + + end + + if(阅兵=="是")then + 战场精灵:显示_高级(0,0,0,1,1.5) + if(阅兵结束按键:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + 阅兵进度=阅兵进度+1 + end + 主角站立动画:显示(主角信息.x,主角信息.y) + for n=1,table.getn(红步兵组)do + 红步兵站立精灵:显示(主角信息.x+红步兵组[n].偏移x,主角信息.y+红步兵组[n].偏移y) + 红步兵阅兵:置位置(主角信息.x+红步兵组[n].偏移x-10,主角信息.y+红步兵组[n].偏移y-10) + if(红步兵阅兵:检测_点(鼠标x,鼠标y))and (阅兵进度==1)then + 红步兵阅兵:显示() + end + if(红步兵组[n].排兵=="否")and(引擎:取按键事件(键_鼠标右))and(红步兵阅兵:检测_点(鼠标x,鼠标y))and (阅兵进度==1)then + 红步兵组[n].排兵="是" + end + if(红步兵组[n].排兵=="是")then + 红步兵站立精灵:显示(鼠标x,鼠标y) + if(引擎:取按键按下(键_鼠标左))then + 红步兵组[n].偏移x=鼠标x-主角信息.x + 红步兵组[n].偏移y=鼠标y-主角信息.y + 红步兵组[n].排兵="否" + end + if(红步兵组[n].偏移x>200)then + 红步兵组[n].偏移x=200 + end + if(红步兵组[n].偏移x<-200)then + 红步兵组[n].偏移x=-200 + end + if(红步兵组[n].偏移y>100)then + 红步兵组[n].偏移y=100 + end + if(红步兵组[n].偏移y<-100)then + 红步兵组[n].偏移y=-100 + end + end + end + for n=1,table.getn(红弓兵组)do + 红弓兵站立精灵:显示(主角信息.x+红弓兵组[n].偏移x,主角信息.y+红弓兵组[n].偏移y) + 红弓兵阅兵:置位置(主角信息.x+红弓兵组[n].偏移x-10,主角信息.y+红弓兵组[n].偏移y-10) + if(红弓兵阅兵:检测_点(鼠标x,鼠标y))then + 红弓兵阅兵:显示() + end + if(引擎:取按键事件(键_鼠标右))and(红弓兵阅兵:检测_点(鼠标x,鼠标y))and (阅兵进度==1)then + 红弓兵组[n].排兵="是" + end + if(红弓兵组[n].排兵=="是")then + 红弓兵站立精灵:显示(鼠标x,鼠标y) + if(引擎:取按键事件(键_鼠标左))then + 红弓兵组[n].偏移x=鼠标x-主角信息.x + 红弓兵组[n].偏移y=鼠标y-主角信息.y + 红弓兵组[n].排兵="否" + end + end + if(红弓兵组[n].偏移x>200)then + 红弓兵组[n].偏移x=200 + end + if(红弓兵组[n].偏移x<-200)then + 红弓兵组[n].偏移x=-200 + end + if(红弓兵组[n].偏移y>100)then + 红弓兵组[n].偏移y=100 + end + if(红弓兵组[n].偏移y<-100)then + 红弓兵组[n].偏移y=-100 + end + end + for n=1,table.getn(红机枪组)do + 红机枪站立精灵:显示(主角信息.x+红机枪组[n].偏移x,主角信息.y+红机枪组[n].偏移y) + 红机枪阅兵:置位置(主角信息.x+红机枪组[n].偏移x-10,主角信息.y+红机枪组[n].偏移y-10) + if(红机枪阅兵:检测_点(鼠标x,鼠标y))then + 红机枪阅兵:显示() + end + if(引擎:取按键事件(键_鼠标右))and(红机枪阅兵:检测_点(鼠标x,鼠标y))and (阅兵进度==1)then + 红机枪组[n].排兵="是" + end + if(红机枪组[n].排兵=="是")then + 红机枪站立精灵:显示(鼠标x,鼠标y) + if(引擎:取按键事件(键_鼠标左))then + 红机枪组[n].偏移x=鼠标x-主角信息.x + 红机枪组[n].偏移y=鼠标y-主角信息.y + 红机枪组[n].排兵="否" + end + end + if(红机枪组[n].偏移x>200)then + 红机枪组[n].偏移x=200 + end + if(红机枪组[n].偏移x<-200)then + 红机枪组[n].偏移x=-200 + end + if(红机枪组[n].偏移y>100)then + 红机枪组[n].偏移y=100 + end + if(红机枪组[n].偏移y<-100)then + 红机枪组[n].偏移y=-100 + end + end + if(阅兵进度==2)then + 战幕右:显示(战幕右x,战幕右y) + 战幕左:显示(战幕左x,战幕左y) + 战幕左x=战幕左x+5 + 战幕右x=战幕右x-5 + if(战幕左x>102)then + 战幕左x=102 + 战幕右x=400 + if(战幕中弧度>0)then + 战幕中弧度=战幕中弧度-0.05 + else + 战幕中弧度=0 + end + 战幕中:显示_高级(400,300,战幕中弧度+3.14,1,1) + if(战幕中弧度==0)then + 阅兵进度=0 + 阅兵="否" + end + end + end + if(阅兵进度==0)then + 战幕右:显示(战幕右x,战幕右y) + 战幕左:显示(战幕左x,战幕左y) + if(战幕中弧度<3.14)then + 战幕中弧度=战幕中弧度+0.05 + 战幕中:显示_高级(400,300,战幕中弧度+3.14,1,1) + else + 战幕左x=战幕左x-5 + 战幕右x=战幕右x+5 + if(战幕左x<-300)then + 阅兵进度=阅兵进度+1 + end + end + end + 提示文字:显示(700,20,"结束布阵") + end + + if(战争=="是")then + 战场精灵:显示_高级(0,0,0,1,1.5) + + + if(主角信息.类型=="大招1")then + if(计时>250)then + 准星精灵:显示(鼠标x,鼠标y) + end + if(计时==250)then + 大招音效1:播放() + 大招目标x=鼠标x + 大招目标y=鼠标y + end + if(计时<250)and(计时>100)then + 准星精灵:显示_高级(大招目标x,大招目标y,0,2,2) + 主角大招:显示(大招目标x,大招目标y-4*(计时-100)+50) + end + if(计时==100)then + 大招音效2:播放() + end + if(计时<=100)then + 大招包围盒:置位置(大招目标x-150,大招目标y-100) + 主角大招:显示(大招目标x+引擎:取随机整数(-5,5),大招目标y+50+引擎:取随机整数(-3,3)) + end + end + + + + 主角包围盒:置位置(主角信息.x-32,主角信息.y-32) + 主角攻击包围盒:置位置(主角信息.x-32+32*主角信息.方向,主角信息.y-32) + + if(战争进度==0)then + 主角信息.法现=主角信息.法总 + 目的地.x=200 + 目的地.y=375 + 主角信息.x=200 + 主角信息.y=375 + 主角信息.方向=1 + 虚拟领导x=600 + 虚拟领导y=375 + 虚拟领导方向=-1 + 战争进度=战争进度+1 + end + + if(主角信息.状态=="站立")and (主角信息.开始攻击=="否")then + 主角站立动画:显示_高级(主角信息.x,主角信息.y,0,主角信息.方向,1) + end + if(主角信息.状态=="行走")and(主角信息.开始攻击=="否")then + 主角行走动画:显示_高级(主角信息.x,主角信息.y,0,主角信息.方向,1) + end + if (主角信息.开始攻击=="是")then + if(主角信息.类型=="")then + 主角攻击动画:显示_高级(主角信息.x,主角信息.y,0,主角信息.方向,1) + else + 主角大招动画:显示_高级(主角信息.x,主角信息.y,0,主角信息.方向,1) + end + end + if(主角信息.血现<=0)then + 主角信息.血现=0 + 主角信息.法现=0 + end + if(主角信息.法现<主角信息.法总)then + 主角信息.法现=主角信息.法现+主角信息.心力*0.005 + else + 主角信息.法现=主角信息.法总 + end + for n=1,table.getn(蓝枪组)do + if(主角包围盒:检测_点(蓝枪组[n].x,蓝枪组[n].y))then + 主角信息.血现=主角信息.血现-20*城市等级 + table.remove(蓝枪组,n) + break + end + end + for n=1,table.getn(蓝箭组)do + if(主角包围盒:检测_点(蓝箭组[n].x,蓝箭组[n].y))then + 主角信息.血现=主角信息.血现-10*城市等级 + table.remove(蓝箭组,n) + break + end + end + for n=1,table.getn(蓝子弹组)do + if(主角包围盒:检测_点(蓝子弹组[n].x,蓝子弹组[n].y))then + 主角信息.血现=主角信息.血现-5*城市等级 + table.remove(蓝子弹组,n) + break + end + end + if(主角信息.血现<=0)then + if(剿匪=="否")then + 战争进度=4 + else + 战争进度=5 + end + end + + + for n=1,table.getn(红步兵组)do + 红步兵包围盒:置位置(主角信息.x+红步兵组[n].偏移x-25,主角信息.y+红步兵组[n].偏移y-25) + for a=1,table.getn(蓝枪组)do + if(红步兵包围盒:检测_点(蓝枪组[a].x,蓝枪组[a].y))then + 红步兵组[n].血=红步兵组[n].血-20*城市等级 + table.remove(蓝枪组,a) + break + end + end + for a=1,table.getn(蓝箭组)do + if(红步兵包围盒:检测_点(蓝箭组[a].x,蓝箭组[a].y))then + 红步兵组[n].血=红步兵组[n].血-10*城市等级 + table.remove(蓝箭组,a) + break + end + end + for a=1,table.getn(蓝子弹组)do + if(红步兵包围盒:检测_点(蓝子弹组[a].x,蓝子弹组[a].y))then + 红步兵组[n].血=红步兵组[n].血-5*城市等级 + table.remove(蓝子弹组,a) + break + end + end + if(红步兵组[n].血<=0)then + table.remove(红步兵组,n) + break + end + + if(主角信息.状态=="站立")and (主角信息.开始攻击=="否")then + 红步兵站立精灵:显示_高级(主角信息.x+红步兵组[n].偏移x,主角信息.y+红步兵组[n].偏移y,0,主角信息.方向,1) + end + if(主角信息.状态=="行走")and (主角信息.开始攻击=="否")then + 红步兵行走动画:显示_高级(主角信息.x+红步兵组[n].偏移x,主角信息.y+红步兵组[n].偏移y,0,主角信息.方向,1) + end + if (主角信息.开始攻击=="是")then + 红步兵攻击动画:显示_高级(主角信息.x+红步兵组[n].偏移x,主角信息.y+红步兵组[n].偏移y,0,主角信息.方向,1) + if(计时==28)then + local 红枪={x=主角信息.x+红步兵组[n].偏移x+主角信息.方向*70, + y=主角信息.y+红步兵组[n].偏移y+5, + 方向=主角信息.方向 + } + table.insert(红枪组,红枪) + end + 攻击音效1:播放() + if(计时<26)then + for n=1,table.getn(红枪组)do + table.remove(红枪组,n) + break + end + end + end + end + + for n=1,table.getn(红弓兵组)do + 红弓兵包围盒:置位置(主角信息.x+红弓兵组[n].偏移x-25,主角信息.y+红弓兵组[n].偏移y-25) + for a=1,table.getn(蓝枪组)do + if(红弓兵包围盒:检测_点(蓝枪组[a].x,蓝枪组[a].y))then + 红弓兵组[n].血=红弓兵组[n].血-20*城市等级 + table.remove(蓝枪组,a) + break + end + end + for a=1,table.getn(蓝箭组)do + if(红弓兵包围盒:检测_点(蓝箭组[a].x,蓝箭组[a].y))then + 红弓兵组[n].血=红弓兵组[n].血-10*城市等级 + table.remove(蓝箭组,a) + break + end + end + for a=1,table.getn(蓝子弹组)do + if(红弓兵包围盒:检测_点(蓝子弹组[a].x,蓝子弹组[a].y))then + 红弓兵组[n].血=红弓兵组[n].血-5*城市等级 + table.remove(蓝子弹组,a) + break + end + end + if(红弓兵组[n].血<=0)then + table.remove(红弓兵组,n) + break + end + + if(主角信息.状态=="站立")and (主角信息.开始攻击=="否")then + 红弓兵站立精灵:显示_高级(主角信息.x+红弓兵组[n].偏移x,主角信息.y+红弓兵组[n].偏移y,0,主角信息.方向,1) + end + if(主角信息.状态=="行走")and (主角信息.开始攻击=="否")then + 红弓兵行走动画:显示_高级(主角信息.x+红弓兵组[n].偏移x,主角信息.y+红弓兵组[n].偏移y,0,主角信息.方向,1) + end + if (主角信息.开始攻击=="是")then + 红弓兵攻击动画:显示_高级(主角信息.x+红弓兵组[n].偏移x,主角信息.y+红弓兵组[n].偏移y,0,主角信息.方向,1) + if(计时==22)then + local 红箭={x=主角信息.x+红弓兵组[n].偏移x, + y=主角信息.y+红弓兵组[n].偏移y+3, + 方向=主角信息.方向, + 射程=160 + } + 攻击音效2:播放() + table.insert(红箭组,红箭) + end + end + end + for n=1,table.getn(红箭组)do + if(红箭组[n].射程>0)then + 箭精灵:显示_高级(红箭组[n].x,红箭组[n].y,0,红箭组[n].方向,1) + if(红箭组[n].方向==1)then + 红箭组[n].x=红箭组[n].x+5 + else + 红箭组[n].x=红箭组[n].x-5 + end + 红箭组[n].射程=红箭组[n].射程-1 + else + table.remove(红箭组,n) + break + end + end + for n=1,table.getn(红机枪组)do + 红机枪包围盒:置位置(主角信息.x+红机枪组[n].偏移x-25,主角信息.y+红机枪组[n].偏移y-25) + for a=1,table.getn(蓝枪组)do + if(红机枪包围盒:检测_点(蓝枪组[a].x,蓝枪组[a].y))then + 红机枪组[n].血=红机枪组[n].血-20*城市等级 + table.remove(蓝枪组,a) + break + end + end + for a=1,table.getn(蓝箭组)do + if(红机枪包围盒:检测_点(蓝箭组[a].x,蓝箭组[a].y))then + 红机枪组[n].血=红机枪组[n].血-10*城市等级 + table.remove(蓝箭组,a) + break + end + end + for a=1,table.getn(蓝子弹组)do + if(红机枪包围盒:检测_点(蓝子弹组[a].x,蓝子弹组[a].y))then + 红机枪组[n].血=红机枪组[n].血-5*城市等级 + table.remove(蓝子弹组,a) + break + end + end + if(红机枪组[n].血<=0)then + table.remove(红机枪组,n) + break + end + + if(主角信息.状态=="站立")and (主角信息.开始攻击=="否")then + 红机枪站立精灵:显示_高级(主角信息.x+红机枪组[n].偏移x,主角信息.y+红机枪组[n].偏移y,0,主角信息.方向,1) + end + if(主角信息.状态=="行走")and (主角信息.开始攻击=="否")then + 红机枪行走动画:显示_高级(主角信息.x+红机枪组[n].偏移x,主角信息.y+红机枪组[n].偏移y,0,主角信息.方向,1) + end + if (主角信息.开始攻击=="是")then + 红机枪攻击动画:显示_高级(主角信息.x+红机枪组[n].偏移x,主角信息.y+红机枪组[n].偏移y,0,主角信息.方向,1) + if(计时<15)then + local 红子弹={x=主角信息.x+红机枪组[n].偏移x+20*主角信息.方向, + y=主角信息.y+红机枪组[n].偏移y+7, + 方向=主角信息.方向, + 偏移=引擎:取随机小数(-2,2), + 射程=15, + } + 攻击音效3:播放() + table.insert(红子弹组,红子弹) + end + end + end + for n=1,table.getn(红子弹组)do + if(红子弹组[n].射程>0)then + 子弹精灵:显示_高级(红子弹组[n].x,红子弹组[n].y,0,红子弹组[n].方向,2) + 红子弹组[n].x=红子弹组[n].x+红子弹组[n].方向*7 + 红子弹组[n].y=红子弹组[n].y+红子弹组[n].偏移 + 红子弹组[n].射程=红子弹组[n].射程-1 + else + table.remove(红子弹组,n) + break + end + end + + if(虚拟领导x>主角信息.x)and(战争进度==2)and(主角信息.类型=="")then + 虚拟领导方向=-1 + if(虚拟领导x>主角信息.x+200)then + 虚拟领导x=虚拟领导x-1.8 + end + end + if(虚拟领导x<主角信息.x)and(战争进度==2)and(主角信息.类型=="")then + 虚拟领导方向=1 + if(虚拟领导x<主角信息.x-200)then + 虚拟领导x=虚拟领导x+1.8 + end + end + if(虚拟领导y<主角信息.y-50)and(战争进度==2)and(主角信息.类型=="")then + 虚拟领导y=虚拟领导y+0.9 + end + if(虚拟领导y>主角信息.y+50)and(战争进度==2)and(主角信息.类型=="")then + 虚拟领导y=虚拟领导y-0.9 + end + if(虚拟领导x<主角信息.x+300)and(虚拟领导x>主角信息.x-300)and(虚拟领导y<主角信息.y+60)and(虚拟领导y>主角信息.y-60)and(主角信息.类型=="")then + 虚拟领导攻击="是" + end + if(虚拟领导攻击=="是")then + 虚拟领导计时=虚拟领导计时-1 + if(虚拟领导计时<=0)then + 虚拟领导攻击="否" + 虚拟领导反计时=虚拟领导反计时+0.5 + if(虚拟领导反计时>56)then + 虚拟领导攻击="是" + 虚拟领导反计时=0 + 虚拟领导计时=56 + end + end + end + + for n=1,table.getn(蓝步兵组)do + 蓝步兵包围盒:置位置(蓝步兵组[n].x+虚拟领导x-25,蓝步兵组[n].y+虚拟领导y-25) + for a=1,table.getn(红枪组)do + if(蓝步兵包围盒:检测_点(红枪组[a].x,红枪组[a].y))then + 蓝步兵组[n].血=蓝步兵组[n].血-50*主角信息.步兵等级 + table.remove(红枪组,n) + break + end + end + for a=1,table.getn(红箭组)do + if(蓝步兵包围盒:检测_点(红箭组[a].x,红箭组[a].y))then + 蓝步兵组[n].血=蓝步兵组[n].血-20*主角信息.弓兵等级 + table.remove(红箭组,n) + break + end + end + for a=1,table.getn(红子弹组)do + if(蓝步兵包围盒:检测_点(红子弹组[a].x,红子弹组[a].y))then + 蓝步兵组[n].血=蓝步兵组[n].血-5*主角信息.机枪等级 + table.remove(红子弹组,a) + break + end + end + if(大招包围盒:检测_点(蓝步兵组[n].x+虚拟领导x,蓝步兵组[n].y+虚拟领导y))and(主角信息.类型=="大招1")and(计时==100)then + 蓝步兵组[n].状态="被攻击" + 蓝步兵组[n].血=蓝步兵组[n].血-主角信息.心力*1.3 + end + if(主角信息.类型=="")then + 蓝步兵组[n].状态="" + end + if(主角攻击包围盒:检测_点(蓝步兵组[n].x+虚拟领导x,蓝步兵组[n].y+虚拟领导y))and(计时==15)then + 蓝步兵组[n].血=蓝步兵组[n].血-主角信息.攻击/2 + end + if(蓝步兵组[n].血<=0)then + table.remove(蓝步兵组,n) + break + end + if(虚拟领导攻击=="是")then + 蓝步兵攻击动画:显示_高级(蓝步兵组[n].x+虚拟领导x,蓝步兵组[n].y+虚拟领导y,0,虚拟领导方向,1) + if(虚拟领导计时==28)then + local 蓝枪={x=蓝步兵组[n].x+虚拟领导x+虚拟领导方向*70, + y=蓝步兵组[n].y+虚拟领导y+5, + 方向=虚拟领导方向 + } + 攻击音效1:播放() + table.insert(蓝枪组,蓝枪) + end + if(虚拟领导计时<26)then + for n=1,table.getn(蓝枪组)do + table.remove(蓝枪组,n) + break + end + end + if(蓝步兵组[n].x+虚拟领导x<0)then + 蓝步兵组[n].x=0-虚拟领导x + end + if(蓝步兵组[n].x+虚拟领导x>800)then + 蓝步兵组[n].x=800-虚拟领导x + end + if(蓝步兵组[n].y+虚拟领导y>600)then + 蓝步兵组[n].y=600-虚拟领导y + end + else + 蓝步兵行走动画:显示_高级(蓝步兵组[n].x+虚拟领导x,蓝步兵组[n].y+虚拟领导y,0,虚拟领导方向,1) + end + if(蓝步兵组[n].状态=="被攻击")then + if(计时>80)then + 伤害精灵:显示(蓝步兵组[n].x+虚拟领导x,蓝步兵组[n].y+虚拟领导y) + end + if(蓝步兵组[n].x+虚拟领导x>大招目标x)then + 蓝步兵组[n].x=蓝步兵组[n].x+引擎:取随机整数(1,2) + else + 蓝步兵组[n].x=蓝步兵组[n].x-引擎:取随机整数(1,2) + end + 蓝步兵组[n].y=蓝步兵组[n].y+(50-计时)*0.05 + end + if(主角信息.类型=="大招2")and(计时==1)then + 蓝步兵组[n].血=蓝步兵组[n].血-主角信息.心力*3 + end + end + + + for n=1,table.getn(蓝弓兵组)do + 蓝弓兵包围盒:置位置(蓝弓兵组[n].x+虚拟领导x-25,蓝弓兵组[n].y+虚拟领导y-25) + for a=1,table.getn(红枪组)do + if(蓝弓兵包围盒:检测_点(红枪组[a].x,红枪组[a].y))then + 蓝弓兵组[n].血=蓝弓兵组[n].血-50*主角信息.步兵等级 + table.remove(红枪组,a) + break + end + end + for a=1,table.getn(红箭组)do + if(蓝弓兵包围盒:检测_点(红箭组[a].x,红箭组[a].y))then + 蓝弓兵组[n].血=蓝弓兵组[n].血-20*主角信息.弓兵等级 + table.remove(红箭组,a) + break + end + end + for a=1,table.getn(红子弹组)do + if(蓝弓兵包围盒:检测_点(红子弹组[a].x,红子弹组[a].y))then + 蓝弓兵组[n].血=蓝弓兵组[n].血-5*主角信息.弓兵等级 + table.remove(红子弹组,a) + break + end + end + if(主角攻击包围盒:检测_点(蓝弓兵组[n].x+虚拟领导x,蓝弓兵组[n].y+虚拟领导y))and(计时==15)then + 蓝弓兵组[n].血=蓝弓兵组[n].血-主角信息.攻击/2 + end + if(蓝弓兵组[n].血<=0)then + table.remove(蓝弓兵组,n) + break + end + if(虚拟领导攻击=="是")then + 蓝弓兵攻击动画:显示_高级(蓝弓兵组[n].x+虚拟领导x,蓝弓兵组[n].y+虚拟领导y,0,虚拟领导方向,1) + if(虚拟领导计时==22)then + local 蓝箭={x=蓝弓兵组[n].x+虚拟领导x, + y=蓝弓兵组[n].y+虚拟领导y+3, + 方向=虚拟领导方向, + 射程=160 + } + 攻击音效2:播放() + table.insert(蓝箭组,蓝箭) + end + else + 蓝弓兵行走动画:显示_高级(蓝弓兵组[n].x+虚拟领导x,蓝弓兵组[n].y+虚拟领导y,0,虚拟领导方向,1) + end + for n=1,table.getn(蓝箭组)do + if(蓝箭组[n].射程>0)then + 箭精灵:显示_高级(蓝箭组[n].x,蓝箭组[n].y,0,蓝箭组[n].方向,1) + if(蓝箭组[n].方向==1)then + 蓝箭组[n].x=蓝箭组[n].x+3 + else + 蓝箭组[n].x=蓝箭组[n].x-3 + end + 蓝箭组[n].射程=蓝箭组[n].射程-1 + else + table.remove(蓝箭组,n) + break + end + end + if(蓝弓兵组[n].x+虚拟领导x<0)then + 蓝弓兵组[n].x=0-虚拟领导x + end + if(蓝弓兵组[n].x+虚拟领导x>800)then + 蓝弓兵组[n].x=800-虚拟领导x + end + if(蓝弓兵组[n].y+虚拟领导y>600)then + 蓝弓兵组[n].y=600-虚拟领导y + end + if(大招包围盒:检测_点(蓝弓兵组[n].x+虚拟领导x,蓝弓兵组[n].y+虚拟领导y))and(主角信息.类型=="大招1")and(计时==100)then + 蓝弓兵组[n].状态="被攻击" + 蓝弓兵组[n].血=蓝弓兵组[n].血-主角信息.心力*0.8 + end + if(主角信息.类型=="")then + 蓝弓兵组[n].状态="" + end + if(蓝弓兵组[n].状态=="被攻击")then + if(计时>80)then + 伤害精灵:显示(蓝弓兵组[n].x+虚拟领导x,蓝弓兵组[n].y+虚拟领导y) + end + if(蓝弓兵组[n].x+虚拟领导x>大招目标x)then + 蓝弓兵组[n].x=蓝弓兵组[n].x+引擎:取随机整数(1,3) + else + 蓝弓兵组[n].x=蓝弓兵组[n].x-引擎:取随机整数(1,3) + end + 蓝弓兵组[n].y=蓝弓兵组[n].y+(50-计时)*0.07 + end + if(主角信息.类型=="大招2")and(计时==1)then + 蓝弓兵组[n].血=蓝弓兵组[n].血-主角信息.心力*2 + end + end + for n=1,table.getn(蓝机枪组)do + 蓝机枪包围盒:置位置(蓝机枪组[n].x+虚拟领导x-25,蓝机枪组[n].y+虚拟领导y-25) + for a=1,table.getn(红枪组)do + if(蓝机枪包围盒:检测_点(红枪组[a].x,红枪组[a].y))then + 蓝机枪组[n].血=蓝机枪组[n].血-50*主角信息.步兵等级 + table.remove(红枪组,a) + break + end + end + for a=1,table.getn(红箭组)do + if(蓝机枪包围盒:检测_点(红箭组[a].x,红箭组[a].y))then + 蓝机枪组[n].血=蓝机枪组[n].血-20*主角信息.弓兵等级 + table.remove(红箭组,a) + break + end + end + if(主角攻击包围盒:检测_点(蓝机枪组[n].x+虚拟领导x,蓝机枪组[n].y+虚拟领导y))and(计时==15)then + 蓝机枪组[n].血=蓝机枪组[n].血-主角信息.攻击/2 + end + if(蓝机枪组[n].血<=0)then + table.remove(蓝机枪组,n) + break + end + if(蓝机枪组[n].x+虚拟领导x<0)then + 蓝机枪组[n].x=0-虚拟领导x + end + if(蓝机枪组[n].x+虚拟领导x>800)then + 蓝机枪组[n].x=800-虚拟领导x + end + if(蓝机枪组[n].y+虚拟领导y>600)then + 蓝机枪组[n].y=600-虚拟领导y + end + for a=1,table.getn(红子弹组)do + if(蓝机枪包围盒:检测_点(红子弹组[a].x,红子弹组[a].y))then + 蓝机枪组[n].血=蓝机枪组[n].血-5*主角信息.机枪等级 + table.remove(红子弹组,a) + break + end + end + if(主角信息.类型=="大招2")and(计时==1)then + 蓝机枪组[n].血=蓝机枪组[n].血-主角信息.心力*4 + end + if(虚拟领导攻击=="是")then + 蓝机枪攻击动画:显示_高级(蓝机枪组[n].x+虚拟领导x,蓝机枪组[n].y+虚拟领导y,0,虚拟领导方向,1) + if(虚拟领导计时<15)then + local 蓝子弹={x=蓝机枪组[n].x+虚拟领导x+20*虚拟领导方向, + y=蓝机枪组[n].y+虚拟领导y+7, + 方向=虚拟领导方向, + 偏移=引擎:取随机小数(-2,2), + 射程=15 + } + 攻击音效3:播放() + table.insert(蓝子弹组,蓝子弹) + end + else + 蓝机枪行走动画:显示_高级(蓝机枪组[n].x+虚拟领导x,蓝机枪组[n].y+虚拟领导y,0,虚拟领导方向,1) + end + for n=1,table.getn(蓝子弹组)do + if(蓝子弹组[n].射程>0)then + 子弹精灵:显示_高级(蓝子弹组[n].x,蓝子弹组[n].y,0,蓝子弹组[n].方向,2) + 蓝子弹组[n].x=蓝子弹组[n].x+蓝子弹组[n].方向*7 + 蓝子弹组[n].y=蓝子弹组[n].y+蓝子弹组[n].偏移 + 蓝子弹组[n].射程=蓝子弹组[n].射程-1 + else + table.remove(蓝子弹组,n) + break + end + end + if(大招包围盒:检测_点(蓝机枪组[n].x+虚拟领导x,蓝机枪组[n].y+虚拟领导y))and(主角信息.类型=="大招1")and(计时==100)then + 蓝机枪组[n].状态="被攻击" + 蓝机枪组[n].血=蓝弓兵组[n].血-主角信息.心力*1.7 + end + if(主角信息.类型=="")then + 蓝机枪组[n].状态="" + end + if(蓝机枪组[n].状态=="被攻击")then + if(计时>80)then + 伤害精灵:显示(蓝机枪组[n].x+虚拟领导x,蓝机枪组[n].y+虚拟领导y) + end + if(蓝机枪组[n].x+虚拟领导x>大招目标x)then + 蓝机枪组[n].x=蓝机枪组[n].x+1 + else + 蓝机枪组[n].x=蓝机枪组[n].x-1 + end + 蓝机枪组[n].y=蓝机枪组[n].y+(50-计时)*0.02 + end + end + + if(table.getn(蓝步兵组)+table.getn(蓝弓兵组)+table.getn(蓝机枪组)<=(步兵参数+弓兵参数+机枪参数)*0.3)and(战争进度==2)then + if(剿匪=="否")then + 战争进度=战争进度+1 + else + 剿匪进度=剿匪进度+1 + 步兵参数=(引擎:取随机整数(3,5)+剿匪进度)*城市等级+table.getn(蓝步兵组) + 弓兵参数=(引擎:取随机整数(2,4)+剿匪进度)*城市等级+table.getn(蓝弓兵组) + 机枪参数=(引擎:取随机整数(0,1)+剿匪进度)*城市等级+table.getn(蓝机枪组) + for n=1,步兵参数 do + local 步兵={x=引擎:取随机整数(-200,200) + ,y=引擎:取随机整数(-100,100), + 攻击="否", + 血=400*城市等级 + } + table.insert(蓝步兵组,步兵) + end + for n=1,弓兵参数 do + local 弓兵={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=160, + 血=250*城市等级 + } + table.insert(蓝弓兵组,弓兵) + end + for n=1,机枪参数 do + local 机枪={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=15, + 血=600*城市等级 + } + table.insert(蓝机枪组,机枪) + end + end + end + + if(战争进度==1)then + 战幕右:显示(战幕右x,战幕右y) + 战幕左:显示(战幕左x,战幕左y) + if(战幕中弧度<3.14)then + 战幕中弧度=战幕中弧度+0.05 + 战幕中:显示_高级(400,300,战幕中弧度+3.14,1,1) + else + 战幕左x=战幕左x-5 + 战幕右x=战幕右x+5 + if(战幕左x<-300)then + if(剿匪=="是")or(情节系统=="是")then + if(剿匪=="是")then + if(呐喊计时>0)then + 呐喊计时=呐喊计时-0.2 + 呐喊精灵:显示(400,50) + else + 战争进度=战争进度+1 + end + end + if(情节系统=="是")then + if(呐喊计时>0)then + 呐喊计时=呐喊计时-0.2 + 呐喊精灵2:显示(400,50) + else + 战争进度=战争进度+1 + end + end + else + 战争进度=战争进度+1 + end + end + end + end + if(战争进度==2)then + if(引擎:取按键按下(键_鼠标右))then + 目的地.x=鼠标x + 目的地.y=鼠标y + if(鼠标y<150)then + 目的地.y=150 + end + if(鼠标y>580)then + 目的地.y=580 + end + if(鼠标x<20)then + 目的地.x=50 + end + if(鼠标x>780)then + 目的地.y=780 + end + end + if(目的地.x>主角信息.x)and (主角信息.开始攻击=="否")then + 主角信息.状态="行走" + 主角信息.方向=1 + 主角信息.x=主角信息.x+2 + end + if(目的地.x<主角信息.x-1)and (主角信息.开始攻击=="否")then + 主角信息.状态="行走" + 主角信息.方向=-1 + 主角信息.x=主角信息.x-2 + end + if(目的地.y<主角信息.y)and (主角信息.开始攻击=="否")then + 主角信息.状态="行走" + 主角信息.y=主角信息.y-1 + end + if(目的地.y>主角信息.y)and (主角信息.开始攻击=="否")then + 主角信息.状态="行走" + 主角信息.y=主角信息.y+1 + end + if(目的地.x<主角信息.x+2)and(目的地.x>主角信息.x-2)and(目的地.y<主角信息.y+0.4)and(目的地.y>主角信息.y-0.4)then + 主角信息.状态="站立" + end + + + if(引擎:取按键按下(键_空格))and(主角信息.开始攻击=="否")then + 主角信息.开始攻击="是" + 计时=56 + end + if(主角信息.开始攻击=="是")then + 计时=计时-1 + if(计时==0)then + 主角信息.开始攻击="否" + 主角信息.类型="" + end + end + if(引擎:取按键按下(键_C))and(主角信息.开始攻击=="否")and(主角信息.法现>=70)then + 主角信息.法现=主角信息.法现-70 + 主角信息.开始攻击="是" + 主角信息.类型="大招1" + 计时=300 + end + if(引擎:取按键按下(键_Z))and(主角信息.开始攻击=="否")and(主角信息.法现>=200)then + 主角信息.法现=主角信息.法现-200 + 主角信息.开始攻击="是" + 主角信息.类型="大招2" + 计时=600 + end + + if(主角信息.类型=="大招2")then + 大招音效3:播放() + 引擎:调整屏幕 (400, 300, 引擎:取随机小数 (-3, 3), 引擎:取随机小数 (-3, 3), 0, 引擎:取随机小数 (1, 1.02), 引擎:取随机小数 (1, 1.02)) + for m=1,10 do + if(大招2[m].增量>=800)then + 大招2[m].x=引擎:取随机整数(-800,0) + 大招2[m].y=引擎:取随机整数(-600,0) + 大招2[m].增量=0 + else + 大招2[m].精灵:显示(大招2[m].x+大招2[m].增量,大招2[m].y+大招2[m].增量) + 大招2[m].增量=大招2[m].增量+4+m + end + end + end + end + + if(战争进度==3)then + 战幕右:显示(战幕右x,战幕右y) + 战幕左:显示(战幕左x,战幕左y) + 战幕左x=战幕左x+5 + 战幕右x=战幕右x-5 + if(战幕左x>102)then + 战幕左x=102 + 战幕右x=400 + if(战幕中弧度>0)then + 战幕中弧度=战幕中弧度-0.05 + else + 战幕中弧度=0 + 领奖精灵:显示(330,480) + end + 战幕中:显示_高级(400,300,战幕中弧度+3.14,1,1) + if(战幕中弧度>1)then + 战争经验=(步兵参数+弓兵参数*2+机枪参数*4)*城市等级*引擎:取随机整数(15,25) + 战争银两=战争经验*引擎:取随机整数(15,25) + end + if(战幕中弧度==0)then + 对话:显示(200,200,"获得经验:") + 对话:显示(400,200,战争经验) + 对话:显示(200,300,"获得银两:") + 对话:显示(400,300,战争银两) + if(主角信息.经验现+战争经验>=主角信息.经验总)then + 恭喜精灵:显示(0,400) + end + end + if(领奖按键:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + 战争进度=0 + 战争="否" + 主角信息.经验现=主角信息.经验现+战争经验 + 主角信息.银两=主角信息.银两+战争银两 + 步兵参数=0 + if(主角信息.经验现>=主角信息.经验总)then + 主角信息.经验现=主角信息.经验现-主角信息.经验总 + 主角信息.等级=主角信息.等级+1 + 剩余点数=剩余点数+5 + 主角信息.血现=主角信息.血总 + 主角信息.法现=主角信息.法总 + end + 弓兵参数=0 + 机枪参数=0 + for n=1,table.getn(蓝步兵组) do + table.remove(蓝步兵组,n) + end + for n=1,table.getn(蓝弓兵组) do + table.remove(蓝弓兵组,n) + end + for n=1,table.getn(蓝机枪组) do + table.remove(蓝机枪组,n) + end + end + end + end + if(战争进度==4)then + 战幕右:显示(战幕右x,战幕右y) + 战幕左:显示(战幕左x,战幕左y) + 战幕左x=战幕左x+5 + 战幕右x=战幕右x-5 + if(战幕左x>102)then + 战幕左x=102 + 战幕右x=400 + if(战幕中弧度>0)then + 战幕中弧度=战幕中弧度-0.05 + else + 战幕中弧度=0 + 领奖精灵:显示(330,480) + end + 战幕中:显示_高级(400,300,战幕中弧度+3.14,1,1) + if(战幕中弧度==0)then + 对话:显示(300,300,"游戏结束!!") + end + if(领奖按键:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + 游戏状态="开始" + 战争="否" + 小状态="" + 主角信息.所在地="" + 情节=0 + 战争进度=0 + 步兵参数=0 + 弓兵参数=0 + 机枪参数=0 + for n=1,table.getn(蓝步兵组) do + table.remove(蓝步兵组,n) + end + for n=1,table.getn(蓝弓兵组) do + table.remove(蓝弓兵组,n) + end + for n=1,table.getn(蓝机枪组) do + table.remove(蓝机枪组,n) + end + + for n=1,table.getn(红步兵组) do + table.remove(红步兵组,n) + end + for n=1,table.getn(红弓兵组) do + table.remove(红弓兵组,n) + end + for n=1,table.getn(红机枪组) do + table.remove(红机枪组,n) + end + end + end + end + if(战争进度==5)then + 战幕右:显示(战幕右x,战幕右y) + 战幕左:显示(战幕左x,战幕左y) + 战幕左x=战幕左x+5 + 战幕右x=战幕右x-5 + if(战幕左x>102)then + 战幕左x=102 + 战幕右x=400 + if(战幕中弧度>0)then + 战幕中弧度=战幕中弧度-0.05 + else + 战幕中弧度=0 + 领奖精灵:显示(330,480) + end + 战幕中:显示_高级(400,300,战幕中弧度+3.14,1,1) + if(战幕中弧度>1)then + 战争经验=剿匪进度*城市等级*引擎:取随机整数(35,45) + 战争银两=战争经验*引擎:取随机整数(15,25) + end + if(战幕中弧度==0)then + 对话:显示(200,100,"剿灭土匪:") + 对话:显示(400,100,剿匪进度) + 对话:显示(600,100,"波") + 对话:显示(200,200,"获得经验:") + 对话:显示(400,200,战争经验) + 对话:显示(200,300,"获得银两:") + 对话:显示(400,300,战争银两) + if(主角信息.经验现+战争经验>=主角信息.经验总)then + 恭喜精灵:显示(0,400) + end + end + if(领奖按键:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + for n=1,table.getn(蓝步兵组) do + table.remove(蓝步兵组,n) + end + for n=1,table.getn(蓝弓兵组) do + table.remove(蓝弓兵组,n) + end + for n=1,table.getn(蓝机枪组) do + table.remove(蓝机枪组,n) + end + 主角信息.经验现=主角信息.经验现+战争经验 + 主角信息.银两=主角信息.银两+战争银两 + 主角信息.血现=主角信息.血总*0.7 + 战争="否" + if(主角信息.经验现>=主角信息.经验总)then + 主角信息.经验现=主角信息.经验现-主角信息.经验总 + 主角信息.等级=主角信息.等级+1 + 剩余点数=剩余点数+5 + 主角信息.血现=主角信息.血总 + 主角信息.法现=主角信息.法总 + end + 剿匪="否" + 剿匪进度=-1 + 战争进度=0 + end + end + end + if(剿匪=="是")and(战争进度==2)then + 对话:显示(700,0,剿匪进度+1) + 对话:显示(760,0,"波") + 对话:显示(650,0,"第") + end + end + + + if(意外>0)then + if(侦查兵x<230)then + 侦查兵x=侦查兵x+v + if(v>0)then + v=v-2 + end + end + 侦查兵:显示_高级(侦查兵x,侦查兵y,0,-0.5,0.5) + if(侦查兵x>=230)then + 对话精灵:显示(100,130) + if(意外>0)and(意外<=2)then + 提示文字:显示(120,195,"报告将军,发现财产!") + if(引擎:取按键按下(键_鼠标左))then + 主角信息.银两=主角信息.银两+引擎:取随机整数(100,700) + 侦查兵x=0 + 意外=0 + v=30 + end + end + if(意外>2)and(意外<=4)then + 提示文字:显示(120,195,"报告将军,遭受损失!") + if(引擎:取按键按下(键_鼠标左))then + 主角信息.银两=主角信息.银两-引擎:取随机整数(50,650) + if(主角信息.银两<0)then + 主角信息.银两=0 + end + 侦查兵x=0 + 意外=0 + v=30 + end + end + if(意外>4)and(意外<=5)then + 提示文字:显示(120,195,"报告将军,有人来降!") + if(引擎:取按键按下(键_鼠标左))then + if(引擎:取随机整数(1,3)==1)then + for n=1,引擎:取随机整数(4,10)do + local 步兵={偏移x=引擎:取随机整数(-200,200), + 偏移y=引擎:取随机整数(-100,100), + 排兵="否", + 血=400*主角信息.步兵等级 + } + table.insert(红步兵组,步兵) + end + end + + if(引擎:取随机整数(1,3)==2)then + for n=1,引擎:取随机整数(4,10)do + local 弓兵={偏移x=引擎:取随机整数(-200,200), + 偏移y=引擎:取随机整数(-100,100), + 排兵="否", + 血=250*主角信息.步兵等级 + } + table.insert(红弓兵组,弓兵) + end + end + + if(引擎:取随机整数(1,3)==3)then + for n=1,引擎:取随机整数(4,10)do + local 机枪={偏移x=引擎:取随机整数(-200,200), + 偏移y=引擎:取随机整数(-100,100), + 排兵="否", + 血=600*主角信息.步兵等级 + } + table.insert(红机枪组,机枪) + end + end + v=30 + 意外=0 + 侦查兵x=0 + end + end + if(意外>5)and(意外<=10)then + 提示文字:显示(120,195,"报告,遇到敌人!!") + if(引擎:取按键按下(键_鼠标左))then + 过度音效:播放() + 战争="是" + 步兵参数=(引擎:取随机整数(2,4))*城市等级 + 弓兵参数=(引擎:取随机整数(1,3))*城市等级 + 机枪参数=(引擎:取随机整数(0,2))*城市等级 + for n=1,步兵参数 do + local 步兵={x=引擎:取随机整数(-200,200) + ,y=引擎:取随机整数(-100,100), + 攻击="否", + 血=400*城市等级 + } + table.insert(蓝步兵组,步兵) + end + for n=1,弓兵参数 do + local 弓兵={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=160, + 血=250*城市等级 + } + table.insert(蓝弓兵组,弓兵) + end + for n=1,机枪参数 do + local 机枪={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=15, + 血=600*城市等级 + } + table.insert(蓝机枪组,机枪) + end + 意外=0 + v=30 + 侦查兵x=0 + end + end + end + end + if(小状态=="加点")and(存档=="否")then + 加点精灵:显示(200,200) + 提示文字:显示(280,213,主角信息.姓名) + 提示文字:显示(310,280,主角信息.臂力) + 提示文字:显示(310,340,主角信息.足力) + 提示文字:显示(310,400,主角信息.心力) + 提示文字:显示(370,455,剩余点数) + if(加点按键1:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))and(剩余点数>0)then + 主角信息.臂力=主角信息.臂力+1 + 剩余点数=剩余点数-1 + end + if(加点按键2:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))and(剩余点数>0)then + 主角信息.足力=主角信息.足力+1 + 剩余点数=剩余点数-1 + end + if(加点按键3:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))and(剩余点数>0)then + 主角信息.心力=主角信息.心力+1 + 剩余点数=剩余点数-1 + end + if(返回按键:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + 小状态="" + end + end + + if(小状态=="查询")and(存档=="否")then + 查询精灵:显示(100,100) + 提示文字:显示(350,120,主角信息.等级) + 提示文字:显示(350,145,主角信息.经验现) + 提示文字:显示(390,145,"/") + 提示文字:显示(400,145,主角信息.经验总) + 提示文字:显示(170,120,主角信息.姓名) + 提示文字:显示(170,152,主角信息.臂力) + 提示文字:显示(170,183,主角信息.足力) + 提示文字:显示(170,214,主角信息.心力) + 提示文字:显示(170,245,主角信息.血现) + 提示文字:显示(210,245,"/") + 提示文字:显示(220,245,主角信息.血总) + 提示文字:显示(350,245,主角信息.法现) + 提示文字:显示(390,245,"/") + 提示文字:显示(400,245,主角信息.法总) + 提示文字:显示(170,278,主角信息.攻击) + 提示文字:显示(350,278,主角信息.防御) + 提示文字:显示(170,310,主角信息.步兵) + 提示文字:显示(350,310,主角信息.弓兵) + 提示文字:显示(170,344,主角信息.机枪) + 提示文字:显示(170,375,主角信息.银两) + if(加点按键:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + 小状态="加点" + end + if(查询结束:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + 小状态="" + end + end + + if(小状态=="征兵")then + 征兵精灵:显示(100,100) + 提示文字:显示(250,107,主角信息.步兵) + 提示文字:显示(250,137,主角信息.弓兵) + 提示文字:显示(250,167,主角信息.机枪) + if(征兵结束:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + 小状态="" + end + if(征兵1:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if((主角信息.银两>=100)) then + local 步兵={偏移x=引擎:取随机整数(-200,200), + 偏移y=引擎:取随机整数(-100,100), + 排兵="否", + 血=400*主角信息.步兵等级 + } + table.insert(红步兵组,步兵) + 主角信息.银两=主角信息.银两-100 + else + 提示内容="没钱了!" + 提示="是" + end + end + if(征兵2:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if((主角信息.银两>=200)) then + local 弓兵={偏移x=引擎:取随机整数(-200,200), + 偏移y=引擎:取随机整数(-100,100), + 排兵="否", + 血=250*主角信息.弓兵等级 + } + table.insert(红弓兵组,弓兵) + 主角信息.银两=主角信息.银两-200 + else + 提示内容="没钱了!" + 提示="是" + end + end + if(征兵3:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if((主角信息.银两>=400)) then + local 机枪={偏移x=引擎:取随机整数(-200,200), + 偏移y=引擎:取随机整数(-100,100), + 排兵="否", + 血=600*主角信息.机枪等级 + } + table.insert(红机枪组,机枪) + 主角信息.银两=主角信息.银两-400 + else + 提示内容="没钱了!" + 提示="是" + end + end + end + + if(小状态=="升级")then + 升级精灵:显示(100,100) + 提示文字:显示(250,107,主角信息.步兵等级) + 提示文字:显示(250,140,主角信息.弓兵等级) + 提示文字:显示(250,170,主角信息.机枪等级) + if(升级结束:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + 小状态="" + end + if(升级1:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if((主角信息.银两>=步兵升级)) then + 主角信息.步兵等级=主角信息.步兵等级+1 + 主角信息.银两=主角信息.银两-步兵升级 + else + 提示内容="没钱了!" + 提示="是" + end + end + if(升级2:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if((主角信息.银两>=弓兵升级)) then + 主角信息.弓兵等级=主角信息.弓兵等级+1 + 主角信息.银两=主角信息.银两-弓兵升级 + else + 提示内容="没钱了!" + 提示="是" + end + end + if(升级3:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + if((主角信息.银两>=机枪升级)) then + 主角信息.机枪等级=主角信息.机枪等级+1 + 主角信息.银两=主角信息.银两-机枪升级 + else + 提示内容="没钱了!" + 提示="是" + end + end + end + if(情节==0)and(主角信息.所在地=="地点1")and(游戏状态=="城市")then + 初始精灵:显示_高级(0,0,0,1.6,600/332) + 情节计时=200 + 情节=0.1 + v=30 + end + if(情节==0.1)then + 初始精灵:显示_高级(0,0,0,1.6,600/332) + if(情节计时>0)then + 情节计时=情节计时-1 + end + if(情节计时>=0)and(情节计时<100)then + if(侦查兵x<230)then + 侦查兵x=侦查兵x+v + if(v>0)then + v=v-2 + end + end + 侦查兵:显示_高级(侦查兵x,侦查兵y,0,-0.5,0.5) + if(侦查兵x>=230)then + 对话精灵:显示(100,130) + 提示文字:显示(120,195,"将军,我是国王的侍卫,奉命更随你!") + if(引擎:取按键按下(键_鼠标左))then + 情节计时=20 + 侦查兵x=0 + v=30 + 情节=0.2 + end + end + end + end + if(情节==0.2)then + 初始精灵:显示_高级(0,0,0,1.6,600/332) + 情节计时=情节计时-1 + 对话框1:显示(100,100) + 提示文字:显示(200,120,"甚好!甚好!") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=1 + end + end + if(情节==1)and(主角信息.所在地=="地点4")then + 过度音效:播放() + 步兵参数=10 + 弓兵参数=7 + 机枪参数=3 + for n=1,步兵参数 do + local 步兵={x=引擎:取随机整数(-200,200) + ,y=引擎:取随机整数(-100,100), + 攻击="否", + 血=400*城市等级, + 状态="" + } + table.insert(蓝步兵组,步兵) + end + for n=1,弓兵参数 do + local 弓兵={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=160, + 血=250*城市等级 + } + table.insert(蓝弓兵组,弓兵) + end + for n=1,机枪参数 do + local 机枪={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=15, + 血=600*城市等级, + 状态="" + } + table.insert(蓝机枪组,机枪) + end + 战争="是" + 情节系统="是" + 情节=2 + end + if(情节==2)and(主角信息.所在地=="地点7")then + 过度音效:播放() + 步兵参数=20 + 弓兵参数=14 + 机枪参数=6 + for n=1,步兵参数 do + local 步兵={x=引擎:取随机整数(-200,200) + ,y=引擎:取随机整数(-100,100), + 攻击="否", + 血=400*城市等级, + 状态="" + } + table.insert(蓝步兵组,步兵) + end + for n=1,弓兵参数 do + local 弓兵={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=160, + 血=250*城市等级 + } + table.insert(蓝弓兵组,弓兵) + end + for n=1,机枪参数 do + local 机枪={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=15, + 血=600*城市等级, + 状态="" + } + table.insert(蓝机枪组,机枪) + end + 战争="是" + 情节系统="是" + 情节=3 + end + if(情节==3)and(主角信息.所在地=="地点12")then + 过度音效:播放() + 步兵参数=30 + 弓兵参数=21 + 机枪参数=9 + for n=1,步兵参数 do + local 步兵={x=引擎:取随机整数(-200,200) + ,y=引擎:取随机整数(-100,100), + 攻击="否", + 血=400*城市等级, + 状态="" + } + table.insert(蓝步兵组,步兵) + end + for n=1,弓兵参数 do + local 弓兵={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=160, + 血=250*城市等级 + } + table.insert(蓝弓兵组,弓兵) + end + for n=1,机枪参数 do + local 机枪={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=15, + 血=600*城市等级, + 状态="" + } + table.insert(蓝机枪组,机枪) + end + 战争="是" + 情节系统="是" + 情节=4 + end + if(主角信息.所在地=="地点16")and(情节==4)and(小状态=="")then + 情节=4.5 + 情节计时=200 + end + if(情节==4.5)then + 鬼塔精灵:显示_高级(0,0,0,800/324,600/388) + if(情节计时>0)then + 情节计时=情节计时-1 + end + if(情节计时>=0)and(情节计时<100)then + if(侦查兵x<230)then + 侦查兵x=侦查兵x+v + if(v>0)then + v=v-2 + end + end + 侦查兵:显示_高级(侦查兵x,侦查兵y,0,-0.5,0.5) + if(侦查兵x>=230)then + 对话精灵:显示(100,130) + 提示文字:显示(120,195,"这就是鬼的老巢!将军,等候指示!") + if(引擎:取按键按下(键_鼠标左))then + 情节计时=20 + 侦查兵x=0 + v=30 + 情节=1.01 + end + end + end + end + + if(情节==1.01)then + 鬼塔精灵:显示_高级(0,0,0,800/324,600/388) + 情节计时=情节计时-1 + 对话框1:显示(100,100) + 提示文字:显示(200,120,"好!攻进去!!") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=1.1 + 情节计时=200 + end + end + + if(情节==1.1)then + 塔内精灵:显示() + if(情节计时>0)then + 情节计时=情节计时-1 + end + if(情节计时>=0)and(情节计时<100)then + if(侦查兵x<230)then + 侦查兵x=侦查兵x+v + if(v>0)then + v=v-2 + end + end + 侦查兵:显示_高级(侦查兵x,侦查兵y,0,-0.5,0.5) + if(侦查兵x>=230)then + 对话精灵:显示(100,130) + 提示文字:显示(120,195,"报告,我们已经攻进塔的内部!") + if(引擎:取按键按下(键_鼠标左))then + 情节计时=40 + v=30 + 侦查兵x=0 + 情节=1.09 + end + end + end + end + + if(情节==1.09)then + 塔内精灵:显示() + 情节计时=情节计时-1 + 对话框1:显示(100,100) + if(情节计时>20)then + 提示文字:显示(200,120,"大家小心!") + else + 提示文字:显示(200,120,"……谁?!") + end + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=1.2 + 情节计时=200 + end + end + + if(情节==1.2)then + 塔内精灵:显示() + if(情节计时>0)then + 情节计时=情节计时-1 + end + if(情节计时>=0)and(情节计时<100)then + if(鬼精灵x>700)then + 鬼精灵x=鬼精灵x-v + if(v>0)then + v=v-2 + end + end + 鬼站立精灵:显示_高级(鬼精灵x,鬼精灵y,0,4,4) + if(鬼精灵x<705)then + 对话精灵:显示_高级(700,130,0,-1,1) + 提示文字:显示(320,195,"谁 ……这 么大胆? 敢吵醒我??!") + if(引擎:取按键按下(键_鼠标左))then + 情节计时=20 + v=30 + 鬼精灵x=800 + 情节=1.22 + end + end + end + end + + if(情节==1.22)then + 塔内精灵:显示() + 情节计时=情节计时-1 + 对话框1:显示(100,100) + 提示文字:显示(200,120,"将士们,准备迎战!!") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=1.23 + 情节计时=200 + end + end + + if(情节>=1.3)and(情节<1.5)then + 塔内精灵:显示() + 主角站立动画:显示(主角信息.x,主角信息.y) + for n=1,table.getn(红步兵组) do + 红步兵站立精灵:显示(红步兵组[n].偏移x+主角信息.x,红步兵组[n].偏移y+主角信息.y) + end + for n=1,table.getn(红弓兵组) do + 红弓兵站立精灵:显示(红弓兵组[n].偏移x+主角信息.x,红弓兵组[n].偏移y+主角信息.y) + end + for n=1,table.getn(红机枪组) do + 红机枪站立精灵:显示(红机枪组[n].偏移x+主角信息.x,红机枪组[n].偏移y+主角信息.y) + end + 鬼站立精灵:显示_高级(570,400,0,-4,4) + end + if(情节==1.25)then + 过度音效:播放() + 情节=1.3 + end + if(情节==1.23)then + 塔内精灵:显示() + if(情节计时>0)then + 情节计时=情节计时-1 + end + if(情节计时>=0)and(情节计时<100)then + if(鬼精灵x>670)then + 鬼精灵x=鬼精灵x-v + end + 鬼站立精灵:显示_高级(鬼精灵x+30,鬼精灵y,0,4,4) + if(鬼精灵x<705)then + if(引擎:取按键按下(键_鼠标左))then + 情节=1.25 + 情节计时=200 + v=30 + 鬼精灵x=800 + end + end + end + if(情节计时>=0)and(情节计时<100)then + if(侦查兵x<230)then + 侦查兵x=侦查兵x+v + if(v>0)then + v=v-2 + end + end + 侦查兵:显示_高级(侦查兵x,侦查兵y,0,-0.5,0.5) + if(侦查兵x>=230)then + 对话:显示(250,200,"!!!!!来决斗!!!!!") + end + end + end + if(情节==1.3)then + 塔内精灵:显示() + 战幕右:显示(战幕右x,战幕右y) + 战幕左:显示(战幕左x,战幕左y) + if(战幕中弧度<3.14)then + 战幕中弧度=战幕中弧度+0.05 + 战幕中:显示_高级(400,300,战幕中弧度+3.14,1,1) + else + 战幕左x=战幕左x-5 + 战幕右x=战幕右x+5 + if(战幕左x<-300)then + 情节计时=450 + 情节=1.4 + 战幕左x=102 + 战幕右x=400 + 战幕中弧度=0 + end + end + end + if(情节==1.4)then + if(情节计时>0)then + 情节计时=情节计时-1 + end + if(情节计时>=350)then + 鬼攻击动画:显示_高级(570,400,0,-4,4) + else + 鬼站立精灵:显示_高级(570,400,0,-4,4) + end + if(情节计时<380)and(情节计时>305)then + 鬼大招:显示_高级(主角信息.x-10,主角信息.y-(情节计时-305)*4,弧度,20,20) + 弧度=弧度+0.1 + else + 弧度=0 + end + if(情节计时==380)then + 大招音效1:播放() + end + if(情节计时<320)then + 引擎:调整屏幕(400, 300, 引擎:取随机小数 (-3, 3), 引擎:取随机小数 (-3, 3), 0, 引擎:取随机小数 (1, 1.02), 引擎:取随机小数 (1, 1.02)) + end + if(情节计时==305)then + 大招音效2:播放() + end + if(情节计时<305)and(情节计时>220)then + 爆炸动画:显示_高级(主角信息.x,主角信息.y,0,4,4) + end + if(情节计时<305)then + 主角信息.血现=0 + 主角信息.法现=0 + for n=1,table.getn(红步兵组) do + if(红步兵组[n].偏移x<0)then + 红步兵组[n].偏移x=红步兵组[n].偏移x-1 + else + 红步兵组[n].偏移x=红步兵组[n].偏移x+1 + end + if(红步兵组[n].偏移y<0)then + 红步兵组[n].偏移y=红步兵组[n].偏移y-0.5 + else + 红步兵组[n].偏移y=红步兵组[n].偏移y+0.5 + end + end + for n=1,table.getn(红弓兵组) do + if(红弓兵组[n].偏移x<0)then + 红弓兵组[n].偏移x=红弓兵组[n].偏移x-1 + else + 红弓兵组[n].偏移x=红弓兵组[n].偏移x+1 + end + if(红弓兵组[n].偏移y<0)then + 红弓兵组[n].偏移y=红弓兵组[n].偏移y-0.5 + else + 红弓兵组[n].偏移y=红弓兵组[n].偏移y+0.5 + end + end + for n=1,table.getn(红机枪组) do + if(红机枪组[n].偏移x<0)then + 红机枪组[n].偏移x=红机枪组[n].偏移x-1 + else + 红机枪组[n].偏移x=红机枪组[n].偏移x+1 + end + if(红机枪组[n].偏移y<0)then + 红机枪组[n].偏移y=红机枪组[n].偏移y-0.5 + else + 红机枪组[n].偏移y=红机枪组[n].偏移y+0.5 + end + end + end + if(情节计时<225)then + for n=1,table.getn(红步兵组) do + table.remove(红步兵组,n) + end + for n=1,table.getn(红弓兵组) do + table.remove(红弓兵组,n) + end + for n=1,table.getn(红机枪组) do + table.remove(红机枪组,n) + end + 清屏(ARGB(225-情节计时,225-情节计时,225-情节计时,225-情节计时)) + end + if(情节计时<10)then + 情节=1.5 + end + end + if(情节==1.5)then + 支付精灵1:显示() + if(支付按键:检测_点(鼠标x,鼠标y))then + 支付按键:显示() + if(引擎:取按键按下(键_鼠标左))then + 情节=1.6 + 情节计时=800 + end + end + end + if(情节==1.6)then + 战幕中弧度=战幕中弧度+0.05 + 支付精灵1:显示() + if(情节计时>0)then + 情节计时=情节计时-1 + end + 支付精灵2:显示_高级(400,300,0,0.75,0.75) + 战幕中:显示_高级(400,300,战幕中弧度,1,1) + if(情节计时<2)then + 对话:显示(300,250,"支付成功!") + 对话:显示(300,300,"点击继续") + if(引擎:取按键按下(键_鼠标左))then + 情节计时=500 + 情节=1.7 + 战幕中弧度=0 + end + end + end + if(情节==1.7)then + if(主角信息.血现<主角信息.血总)then + 主角信息.血现= 主角信息.血现+ 主角信息.血总/400 + else + 主角信息.血现= 主角信息.血总 + end + if(主角信息.法现<主角信息.法总)then + 主角信息.法现= 主角信息.法现+ 主角信息.法总/400 + else + 主角信息.法现= 主角信息.法总 + end + if(情节计时>0)then + 情节计时=情节计时-0.5 + end + 清屏(ARGB(255,128,128,128)) + 旗:置颜色(ARGB(0,0,0,0)) + 场景精灵:显示_高级(场景x,0,0,0.6,0.6) + if(情节计时>275)then + 场景精灵:置颜色(ARGB(500-情节计时,500-情节计时,500-情节计时,500-情节计时)) + end + if(情节计时<250)and(场景x>-1000)then + 场景x=-(250-情节计时)*3 + end + if(情节计时<20)then + 对话:显示(100,200,"这是?哪……") + end + if(情节计时<10)and(引擎:取按键按下(键_鼠标左))then + 情节计时=20 + 情节=1.8 + 旗:置颜色(ARGB(255,255,255,255)) + end + end + if(情节==1.8)then + 情节计时=情节计时-1 + 场景精灵:显示_高级(-1000,0,0,0.6,0.6) + 女主角精灵:显示_高级(730,200,0,-1,1) + 对话框2:显示(100,100) + 小文字:显示(140,190,"韵儿") + 提示文字:显示(200,120,"醒啦?") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=1.81 + 情节计时=20 + end + end + + if(情节==1.81)then + 情节计时=情节计时-1 + 场景精灵:显示_高级(-1000,0,0,0.6,0.6) + 女主角精灵:显示_高级(730,200,0,-1,1) + 对话框1:显示(100,100) + 小文字:显示(110,180,主角信息.姓名) + 提示文字:显示(200,120,"我这是在哪?发生什么了?") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=1.82 + 情节计时=20 + end + end + + if(情节==1.82)then + 情节计时=情节计时-1 + 场景精灵:显示_高级(-1000,0,0,0.6,0.6) + 女主角精灵:显示_高级(730,200,0,-1,1) + 对话框1:显示(100,100) + 小文字:显示(110,180,主角信息.姓名) + 提示文字:显示(200,120,"对了,你是?") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=1.83 + 情节计时=20 + end + end + + if(情节==1.83)then + 情节计时=情节计时-1 + 场景精灵:显示_高级(-1000,0,0,0.6,0.6) + 女主角精灵:显示_高级(730,200,0,-1,1) + 对话框2:显示(100,100) + 小文字:显示(140,190,"韵儿") + 提示文字:显示(200,120,"呵呵,别急,先歇着,你都伤得不轻呢!") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=1.84 + 情节计时=100 + end + end + if(情节==1.84)then + 场景精灵:显示_高级(-1000,0,0,0.6,0.6) + if(情节计时>0)then + 情节计时=情节计时-1 + end + if(情节计时<150)then + 对话:显示(250,200,"……10天后……") + end + if(情节计时<50)and(引擎:取按键按下(键_鼠标左))then + 情节=1.85 + 情节计时=200 + end + end + if(情节==1.85)then + 场景精灵:显示_高级(-1000,0,0,0.6,0.6) + if(情节计时>0)then + 情节计时=情节计时-1 + end + if(情节计时>=0)and(情节计时<100)then + if(侦查兵x<230)then + 侦查兵x=侦查兵x+v + if(v>0)then + v=v-2 + end + end + 侦查兵:显示_高级(侦查兵x,侦查兵y,0,-0.5,0.5) + if(侦查兵x>=230)then + 对话精灵:显示(100,130) + 提示文字:显示(120,195,"报告,弟兄们伤亡惨重!") + if(引擎:取按键按下(键_鼠标左))then + 情节计时=20 + v=30 + 侦查兵x=0 + 情节=1.86 + end + end + end + end + if(情节==1.86)then + 情节计时=情节计时-1 + 场景精灵:显示_高级(-1000,0,0,0.6,0.6) + 女主角精灵:显示_高级(730,200,0,-1,1) + 对话框1:显示(100,100) + 小文字:显示(110,180,主角信息.姓名) + 提示文字:显示(200,120,"那……") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=1.87 + 情节计时=20 + end + end + if(情节==1.87)then + 情节计时=情节计时-1 + 场景精灵:显示_高级(-1000,0,0,0.6,0.6) + 女主角精灵:显示_高级(730,200,0,-1,1) + 对话框2:显示(100,100) + 小文字:显示(140,190,"韵儿") + 提示文字:显示(200,120,"唉……那地方太过凶险!") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=1.88 + 情节计时=20 + end + end + if(情节==1.88)then + 情节计时=情节计时-1 + 场景精灵:显示_高级(-1000,0,0,0.6,0.6) + 女主角精灵:显示_高级(730,200,0,-1,1) + 对话框1:显示(100,100) + 小文字:显示(110,180,主角信息.姓名) + 提示文字:显示(200,120,"难道就只能束手无策吗?……") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=1.89 + 情节计时=20 + end + end + if(情节==1.89)then + 情节计时=情节计时-1 + 场景精灵:显示_高级(-1000,0,0,0.6,0.6) + 女主角精灵:显示_高级(730,200,0,-1,1) + 对话框2:显示(100,100) + 小文字:显示(140,190,"韵儿") + 提示文字:显示(200,120,"呃……要不你去那边的雪山看看!") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=1.90 + 情节计时=20 + end + end + if(情节==1.90)then + 情节计时=情节计时-1 + 场景精灵:显示_高级(-1000,0,0,0.6,0.6) + 女主角精灵:显示_高级(730,200,0,-1,1) + 对话框1:显示(100,100) + 小文字:显示(110,180,主角信息.姓名) + 提示文字:显示(200,120,"多谢指点") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=1.91 + 情节计时=20 + end + end + if(情节==1.91)then + 场景精灵:显示_高级(-1000,0,0,0.6,0.6) + if(情节计时>0)then + 情节计时=情节计时-1 + end + if(情节计时>=0)and(情节计时<100)then + if(侦查兵x<230)then + 侦查兵x=侦查兵x+v + if(v>0)then + v=v-2 + end + end + 侦查兵:显示_高级(侦查兵x,侦查兵y,0,-0.5,0.5) + if(侦查兵x>=230)then + 对话精灵:显示(100,130) + 提示文字:显示(120,195,"将军,咱出发吧!") + if(引擎:取按键按下(键_鼠标左))then + 情节计时=20 + v=30 + 侦查兵x=0 + 情节=5 + 主角信息.所在地="地点17" + end + end + end + end + + if(情节==5)and(主角信息.所在地=="地点20")and(小状态=="")then + 情节=5.1 + 情节计时=200 + end + if(情节==5.1)then + if(情节计时>0)then + 情节计时=情节计时-1 + end + 雪山:显示_高级(0,0,0,0.8,1) + if(情节计时>=0)and(情节计时<100)then + if(侦查兵x<230)then + 侦查兵x=侦查兵x+v + if(v>0)then + v=v-2 + end + end + 侦查兵:显示_高级(侦查兵x,侦查兵y,0,-0.5,0.5) + if(侦查兵x>=230)then + 对话精灵:显示(100,130) + 提示文字:显示(120,195,"报告,到达目的地,等候指示!") + if(引擎:取按键按下(键_鼠标左))then + 情节计时=20 + v=30 + 侦查兵x=0 + 情节=5.2 + end + end + end + end + if(情节==5.2)then + 情节计时=情节计时-1 + 雪山:显示_高级(0,0,0,0.8,1) + 对话框1:显示(100,100) + 小文字:显示(110,180,主角信息.姓名) + 提示文字:显示(200,120,"众将官,四下去搜,有情况立即来报!") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=5.3 + 情节计时=200 + end + end + if(情节==5.3)then + if(情节计时>0)then + 情节计时=情节计时-1 + end + 雪山:显示_高级(0,0,0,0.8,1) + if(情节计时>=0)and(情节计时<100)then + if(侦查兵x<230)then + 侦查兵x=侦查兵x+v + if(v>0)then + v=v-2 + end + end + 侦查兵:显示_高级(侦查兵x,侦查兵y,0,-0.5,0.5) + if(侦查兵x>=230)then + 对话精灵:显示(100,130) + 提示文字:显示(120,195,"是!") + if(引擎:取按键按下(键_鼠标左))then + 情节计时=200 + v=30 + 侦查兵x=0 + 情节=5.4 + end + end + end + end + if(情节==5.4)then + if(情节计时>0)then + 情节计时=情节计时-1 + end + 雪山:显示_高级(0,0,0,0.8,1) + if(情节计时>=0)and(情节计时<100)then + if(侦查兵x<230)then + 侦查兵x=侦查兵x+v + if(v>0)then + v=v-2 + end + end + 侦查兵:显示_高级(侦查兵x,侦查兵y,0,-0.5,0.5) + if(侦查兵x>=230)then + 对话精灵:显示(100,130) + 提示文字:显示(120,195,"报告,有发现!") + if(引擎:取按键按下(键_鼠标左))then + 情节计时=20 + v=30 + 侦查兵x=0 + 情节=5.5 + end + end + end + end + if(情节==5.5)then + 情节计时=情节计时-1 + 雪山:显示_高级(0,0,0,0.8,1) + 对话框1:显示(100,100) + 小文字:显示(110,180,主角信息.姓名) + 提示文字:显示(200,120,"讲!") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=5.6 + 情节计时=500 + end + end + if(情节==5.6)then + if(情节计时>0)then + 情节计时=情节计时-1 + end + 雪山:显示_高级(0,0,0,0.8,1) + if(情节计时<350)then + 卷轴左:显示(40,60) + 卷轴:显示_高级(110,60,0,(卷轴右x-40)/580,1) + 卷轴右:显示(卷轴右x,60) + if(卷轴右x<680)then + 卷轴右x=卷轴右x+1 + else + 卷轴右x=680 + end + if(卷轴右x==680)then + 卷轴字:置颜色(ARGB(卷轴透明,卷轴透明,卷轴透明,卷轴透明)) + 卷轴字:显示_高级(110,60,0,(卷轴右x-100)/580,1) + if(卷轴透明<225)then + 卷轴透明= 卷轴透明+1 + else + 卷轴透明=225 + end + end + if(卷轴透明==225)then + 对话精灵:显示(100,130) + 提示文字:显示(120,195,"发现这个!") + end + end + if(情节计时>=0)and(情节计时<500)then + if(侦查兵x<230)then + 侦查兵x=侦查兵x+v + if(v>0)then + v=v-2 + end + end + 侦查兵:显示_高级(侦查兵x,侦查兵y,0,-0.5,0.5) + if(卷轴右x>=680)and(卷轴透明==225)then + if(引擎:取按键按下(键_鼠标左))then + 情节计时=60 + 卷轴右x=80 + v=30 + 侦查兵x=0 + 情节=5.7 + 卷轴透明=0 + end + end + end + end + if(情节==5.7)then + 情节计时=情节计时-1 + 雪山:显示_高级(0,0,0,0.8,1) + 对话框1:显示(100,100) + 小文字:显示(110,180,主角信息.姓名) + if(情节计时>30)and(情节计时<60)then + 提示文字:显示(200,120,"好!") + end + if(情节计时<30)then + 提示文字:显示(200,120,"重振!再战!") + end + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=5.8 + 情节计时=200 + end + end + if(情节==5.8)then + if(情节计时>0)then + 情节计时=情节计时-1 + end + 雪山:显示_高级(0,0,0,0.8,1) + if(侦查兵x>=230)then + 对话精灵:显示(100,130) + 提示文字:显示(120,195,"再战!再战!!!") + end + if(情节计时>=0)and(情节计时<500)then + if(侦查兵x<230)then + 侦查兵x=侦查兵x+v + if(v>0)then + v=v-2 + end + end + 侦查兵:显示_高级(侦查兵x,侦查兵y,0,-0.5,0.5) + if(侦查兵x>=230)then + if(引擎:取按键按下(键_鼠标左))then + 情节计时=40 + 卷轴右x=80 + v=30 + 侦查兵x=0 + 情节=6 + end + end + end + end + + if(主角信息.所在地=="地点16")and(情节==6)and(小状态=="")then + 情节=6.1 + 情节计时=200 + end + if(情节==6.1)then + 情节计时=情节计时-1 + 鬼塔精灵:显示_高级(0,0,0,800/324,600/388) + if(情节计时<10)then + 情节=6.2 + 情节计时=200 + end + end + if(情节==6.2)then + 塔内精灵:显示() + if(情节计时>0)then + 情节计时=情节计时-1 + end + if(情节计时>=0)and(情节计时<100)then + if(鬼精灵x>700)then + 鬼精灵x=鬼精灵x-v + if(v>0)then + v=v-2 + end + end + 鬼站立精灵:显示_高级(鬼精灵x,鬼精灵y,0,4,4) + if(鬼精灵x<705)then + 对话精灵:显示_高级(700,130,0,-1,1) + 提示文字:显示(320,195,"又 ……是 你? 还敢来??!") + if(引擎:取按键按下(键_鼠标左))then + 情节计时=20 + v=30 + 鬼精灵x=800 + 情节=6.3 + end + end + end + end + + if(情节==6.3)then + 情节计时=情节计时-1 + 塔内精灵:显示() + 对话框1:显示(100,100) + 提示文字:显示(200,120,"将士们,为死去的弟兄们复仇!!") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=6.35 + 情节计时=200 + end + end + + if(情节>=6.4)and(情节<6.47)then + 塔内精灵:显示() + 主角站立动画:显示(主角信息.x,主角信息.y) + for n=1,table.getn(红步兵组) do + 红步兵站立精灵:显示(红步兵组[n].偏移x+主角信息.x,红步兵组[n].偏移y+主角信息.y) + end + for n=1,table.getn(红弓兵组) do + 红弓兵站立精灵:显示(红弓兵组[n].偏移x+主角信息.x,红弓兵组[n].偏移y+主角信息.y) + end + for n=1,table.getn(红机枪组) do + 红机枪站立精灵:显示(红机枪组[n].偏移x+主角信息.x,红机枪组[n].偏移y+主角信息.y) + end + 鬼站立精灵:显示_高级(570,400,0,-4,4) + end + if(情节==6.4)then + 过度音效:播放() + 情节=6.45 + end + if(情节==6.35)then + 塔内精灵:显示() + if(情节计时>0)then + 情节计时=情节计时-1 + end + if(情节计时>=0)and(情节计时<100)then + if(鬼精灵x>670)then + 鬼精灵x=鬼精灵x-v + end + 鬼站立精灵:显示_高级(鬼精灵x+30,鬼精灵y,0,4,4) + if(鬼精灵x<705)then + if(引擎:取按键按下(键_鼠标左))then + 情节=6.4 + 情节计时=200 + v=30 + 鬼精灵x=800 + end + end + end + if(情节计时>=0)and(情节计时<100)then + if(侦查兵x<230)then + 侦查兵x=侦查兵x+v + if(v>0)then + v=v-2 + end + end + 侦查兵:显示_高级(侦查兵x,侦查兵y,0,-0.5,0.5) + if(侦查兵x>=230)then + 对话:显示(250,200,"!!!!!来决斗!!!!!") + end + end + end + if(情节==6.45)then + 塔内精灵:显示() + 战幕右:显示(战幕右x,战幕右y) + 战幕左:显示(战幕左x,战幕左y) + if(战幕中弧度<3.14)then + 战幕中弧度=战幕中弧度+0.05 + 战幕中:显示_高级(400,300,战幕中弧度+3.14,1,1) + else + 战幕左x=战幕左x-5 + 战幕右x=战幕右x+5 + if(战幕左x<-300)then + 情节计时=450 + 情节=6.46 + 战幕左x=102 + 战幕右x=400 + 战幕中弧度=0 + end + end + end + if(情节==6.46)then + if(情节计时>0)then + 情节计时=情节计时-1 + end + if(情节计时>=350)then + 鬼攻击动画:显示_高级(570,400,0,-4,4) + else + 鬼站立精灵:显示_高级(570,400,0,-4,4) + end + if(情节计时<380)and(情节计时>305)then + 鬼大招:显示_高级(主角信息.x-10,主角信息.y-(情节计时-305)*4,弧度,20,20) + 弧度=弧度+0.1 + else + 弧度=0 + end + if(情节计时==380)then + 大招音效1:播放() + end + if(情节计时<320)and(情节计时>300)then + 引擎:调整屏幕(400, 300, 引擎:取随机小数 (-3, 3), 引擎:取随机小数 (-3, 3), 0, 引擎:取随机小数 (1, 1.02), 引擎:取随机小数 (1, 1.02)) + end + if(情节计时==305)then + 大招音效2:播放() + end + if(情节计时<305)and(情节计时>220)then + 爆炸动画:显示_高级(主角信息.x,主角信息.y,0,4,4) + end + if(情节计时<120)then + 对话精灵:显示_高级(700,130,0,-1,1) + 提示文字:显示(320,195,"嗯?!不妙,我跑!!小的们拦住!") + end + if(情节计时<100)and(引擎:取按键按下(键_鼠标左))then + 情节=6.47 + 情节计时=20 + + end + end + if(情节==6.47)then + 情节计时=情节计时-1 + 塔内精灵:显示() + 对话框1:显示(100,100) + 提示文字:显示(200,120,"!!!!追!!!!") + if(情节计时<5)and(引擎:取按键按下(键_鼠标左))then + 情节=6.5 + 情节计时=200 + end + end + if(情节==6.5)then + 过度音效:播放() + 蓝步兵行走动画:置图片(敌方士兵2) + 蓝步兵攻击动画:置图片(敌方士兵2) + 蓝弓兵行走动画:置图片(敌方士兵2) + 蓝弓兵攻击动画:置图片(敌方士兵2) + 蓝机枪行走动画:置图片(敌方士兵2) + 蓝机枪攻击动画:置图片(敌方士兵2) + + 步兵参数=20 + 弓兵参数=15 + 机枪参数=8 + for n=1,步兵参数 do + local 步兵={x=引擎:取随机整数(-200,200) + ,y=引擎:取随机整数(-100,100), + 攻击="否", + 血=400*城市等级, + 状态="" + } + table.insert(蓝步兵组,步兵) + end + for n=1,弓兵参数 do + local 弓兵={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=160, + 血=250*城市等级 + } + table.insert(蓝弓兵组,弓兵) + end + for n=1,机枪参数 do + local 机枪={x=引擎:取随机整数(-200,200), + y=引擎:取随机整数(-100,100), + 射程=15, + 血=600*城市等级, + 状态="" + } + table.insert(蓝机枪组,机枪) + end + 情节=6.6 + 情节计时=100 + 战争="是" + end + if(情节==6.6)and(战争=="否")then + 蓝步兵行走动画:置图片(敌方士兵) + 蓝步兵攻击动画:置图片(敌方士兵) + 蓝弓兵行走动画:置图片(敌方士兵) + 蓝弓兵攻击动画:置图片(敌方士兵) + 蓝机枪行走动画:置图片(敌方士兵) + 蓝机枪攻击动画:置图片(敌方士兵) + 情节计时=情节计时-1 + if(情节计时<50)then + 塔内精灵:显示() + 主角站立动画:显示(主角信息.x,主角信息.y) + 鬼站立精灵:显示_高级(570,400,0,-4,4) + 对话框1:显示(100,100) + 提示文字:显示(200,120,"封印!!") + end + if(情节计时<10)and(引擎:取按键按下(键_鼠标左))then + 情节=6.7 + 情节计时=1500 + end + end + if(情节==6.7)then + 情节计时=情节计时-1 + if(情节计时>300)then + 塔内精灵:显示() + 主角站立动画:显示(主角信息.x,主角信息.y) + 鬼站立精灵:显示_高级(570,400,0,-4,4) + 卷轴左:显示(40,60) + 卷轴:显示_高级(110,60,0,(卷轴右x-40)/580,1) + 卷轴右:显示(卷轴右x,60) + end + if(卷轴右x<680)then + 卷轴右x=卷轴右x+1 + else + 卷轴右x=680 + end + if(卷轴右x==680)and(情节计时>300)then + 卷轴字:置颜色(ARGB(卷轴透明,卷轴透明,卷轴透明,卷轴透明)) + 卷轴字:显示_高级(110,60,0,(卷轴右x-100)/580,1) + if(卷轴透明<225)then + 卷轴透明= 卷轴透明+1 + else + 卷轴透明=225 + end + end + if(卷轴透明==225)and(情节计时>300)then + 龙精灵:置颜色(ARGB(龙透明,龙透明,龙透明,龙透明)) + 龙精灵:显示(400,300) + if(龙透明<225)then + 龙透明=龙透明+1 + else + 龙透明=225 + end + end + if(龙透明==225)and(情节计时>225)then + 塔内精灵:显示() + 主角站立动画:显示(主角信息.x,主角信息.y) + 鬼站立精灵:显示_高级(570,400,0,-4,4) + 闪电动画:显示_高级(引擎:取随机整数(400,800),0,0,1,600/416) + 大招音效3:播放() + end + if(情节计时<225)then + 旗:置颜色(ARGB(0,0,0,0)) + 清屏(ARGB(225-情节计时,225-情节计时,225-情节计时,225-情节计时)) + end + if(情节计时<0)then + 龙透明=0 + 卷轴透明=0 + 游戏状态="胜利" + 旗:置颜色(ARGB(225,225,225,225)) + end + end + if(游戏状态=="胜利")then + 初始精灵:显示_高级(0,0,0,1.6,600/332) + 文字:显示(50,300,当前文本2) + end + + + + + + + if(游戏状态=="开始")or(游戏状态=="开盘")or(游戏状态=="初始")or(游戏状态=="胜利")then + else + 主角信息精灵:显示_高级(0,0,0,0.5,0.5) + 血条精灵:显示_高级(90,15,0,主角信息.血现*1.5/主角信息.血总,1) + 法条精灵:显示_高级(90,35,0,主角信息.法现*1.25/主角信息.法总,1) + 小文字:显示(30,60,主角信息.姓名) + if(查询按键:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + 小状态="查询" + end + if(战争=="否")and(阅兵=="否")and(游戏状态=="城市")then + 提示文字:显示(700,50,"布阵") + if(阅兵按键:检测_点(鼠标x,鼠标y))and(引擎:取按键按下(键_鼠标左))then + 过度音效:播放() + 阅兵="是" + end + end + end + + if(提示=="是")then + 提示精灵:显示(200,200) + 提示文字:显示(205,245,提示内容) + if(提示确认:检测_点(鼠标x,鼠标y))and(引擎:取按键事件(键_鼠标左))then + 提示="否" + end + end + + if(引擎:取按键按下(键_Q))and(存档=="否")and(游戏状态=="城市")then + 存档="是" + end + if(存档=="是")then + 姓名输入:密码模式(true) + 对话:显示(150,50,"存档 输入密码,按回车继续") + 姓名输入:显示(200,100) + if(引擎:取按键按下(键_回车))then + 姓名输入:密码模式(false) + 姓名输入:清空() + 写配置项("Dat/游戏配置.ini","存档","情节",情节) + 写配置项("Dat/游戏配置.ini","存档","密码",姓名输入:取文本()) + 写配置项("Dat/游戏配置.ini","存档","姓名",主角信息.姓名) + 写配置项("Dat/游戏配置.ini","存档","游戏状态",游戏状态) + 写配置项("Dat/游戏配置.ini","存档","步兵等级",主角信息.步兵等级) + 写配置项("Dat/游戏配置.ini","存档","弓兵等级",主角信息.弓兵等级) + 写配置项("Dat/游戏配置.ini","存档","机枪等级",主角信息.机枪等级) + 写配置项("Dat/游戏配置.ini","存档","银两",主角信息.银两+主角信息.步兵*100+主角信息.弓兵*200+主角信息.机枪*400) + 写配置项("Dat/游戏配置.ini","存档","血现",主角信息.血现) + 写配置项("Dat/游戏配置.ini","存档","血总",主角信息.血总) + 写配置项("Dat/游戏配置.ini","存档","法总",主角信息.法总) + 写配置项("Dat/游戏配置.ini","存档","剩余点数",剩余点数) + 写配置项("Dat/游戏配置.ini","存档","所在地",所在地) + 写配置项("Dat/游戏配置.ini","存档","等级",主角信息.等级) + 写配置项("Dat/游戏配置.ini","存档","臂力",主角信息.臂力) + 写配置项("Dat/游戏配置.ini","存档","足力",主角信息.足力) + 写配置项("Dat/游戏配置.ini","存档","心力",主角信息.心力) + 存档="否" + end + end + + + + else + 暂停精灵:显示_高级(0,0,0,800/643,600/516) + if(暂停计时>10)then + 对话:显示(200,400,"游戏暂停中,点击继续……") + end + if(暂停计时>0)then + 暂停计时=暂停计时-1 + else + 暂停计时=20 + end + + + + + + + + if(引擎:取按键按下(键_鼠标左))then + 暂停="否" + end + end + + 渲染结束() + return false +end + + + + + + + + + +--=============================================================================== +-- ■ 网络数据处理() +--=============================================================================== +function 网络数据处理 (命令,参数1,参数2,附加) + + +end + + + + +--=============================================================================-- +-- ■ 网络连接断开() +--=============================================================================-- +function 网络连接断开 () + + +end + + + +--=============================================================================== +-- ■ 屏幕获得焦点() +--=============================================================================== +function 屏幕获得焦点 () + + return false +end + + + +--=============================================================================== +-- ■ 屏幕失去焦点() +--=============================================================================== +function 屏幕失去焦点 () + +暂停="是" + + return false +end + + + +--=============================================================================== +-- ■ 屏幕关闭() +--=============================================================================== +function 屏幕关闭 () + + + + return true +end + + + +--=============================================================================== +-- ■ 渲染区保护() +--=============================================================================== +function 渲染区保护 () + + + return false +end + + + + + + + + -- Gitee From c0c8e397902d40cf88149dd5730276bbd14fa366 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E6=B0=B4?= <1494909107@qq.com> Date: Tue, 18 Jul 2023 13:31:35 +0000 Subject: [PATCH 07/12] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=20lua/Yuns494?= =?UTF-8?q?9=E7=9A=84=E5=9E=83=E5=9C=BE=E6=B8=B8=E6=88=8F=E5=8F=B2/?= =?UTF-8?q?=E9=A3=9E=E6=9C=BA=E5=B0=8F=E6=B8=B8=E6=88=8F.lua=20=E4=B8=BA?= =?UTF-8?q?=20lua/Yuns4949=E7=9A=84=E5=9E=83=E5=9C=BE=E6=B8=B8=E6=88=8F?= =?UTF-8?q?=E5=8F=B2/1.=E9=A3=9E=E6=9C=BA=E5=B0=8F=E6=B8=B8=E6=88=8F.lua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...1\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" => "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/1.\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" (100%) diff --git "a/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" "b/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/1.\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" similarity index 100% rename from "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" rename to "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/1.\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" -- Gitee From aefe183183d868fd2055606d47b0a81c7833392e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E6=B0=B4?= <1494909107@qq.com> Date: Tue, 18 Jul 2023 13:31:46 +0000 Subject: [PATCH 08/12] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=20lua/Yuns494?= =?UTF-8?q?9=E7=9A=84=E5=9E=83=E5=9C=BE=E6=B8=B8=E6=88=8F=E5=8F=B2/?= =?UTF-8?q?=E5=90=8D=E5=AD=97=E5=8F=AB=E9=99=8D=E9=AD=94=E8=B7=AF=E7=9A=84?= =?UTF-8?q?=E6=B8=B8=E6=88=8F.lua=20=E4=B8=BA=20lua/Yuns4949=E7=9A=84?= =?UTF-8?q?=E5=9E=83=E5=9C=BE=E6=B8=B8=E6=88=8F=E5=8F=B2/2.=E5=90=8D?= =?UTF-8?q?=E5=AD=97=E5=8F=AB=E9=99=8D=E9=AD=94=E8=B7=AF=E7=9A=84=E6=B8=B8?= =?UTF-8?q?=E6=88=8F.lua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...1\255\224\350\267\257\347\232\204\346\270\270\346\210\217.lua" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/\345\220\215\345\255\227\345\217\253\351\231\215\351\255\224\350\267\257\347\232\204\346\270\270\346\210\217.lua" => "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/2.\345\220\215\345\255\227\345\217\253\351\231\215\351\255\224\350\267\257\347\232\204\346\270\270\346\210\217.lua" (100%) diff --git "a/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/\345\220\215\345\255\227\345\217\253\351\231\215\351\255\224\350\267\257\347\232\204\346\270\270\346\210\217.lua" "b/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/2.\345\220\215\345\255\227\345\217\253\351\231\215\351\255\224\350\267\257\347\232\204\346\270\270\346\210\217.lua" similarity index 100% rename from "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/\345\220\215\345\255\227\345\217\253\351\231\215\351\255\224\350\267\257\347\232\204\346\270\270\346\210\217.lua" rename to "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/2.\345\220\215\345\255\227\345\217\253\351\231\215\351\255\224\350\267\257\347\232\204\346\270\270\346\210\217.lua" -- Gitee From 15fdc5300f72f9562275f8d1b67ffe794ebfd172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E6=B0=B4?= <1494909107@qq.com> Date: Tue, 18 Jul 2023 13:32:43 +0000 Subject: [PATCH 09/12] =?UTF-8?q?update=20lua/Yuns4949=E7=9A=84=E5=9E=83?= =?UTF-8?q?=E5=9C=BE=E6=B8=B8=E6=88=8F=E5=8F=B2/1.=E9=A3=9E=E6=9C=BA?= =?UTF-8?q?=E5=B0=8F=E6=B8=B8=E6=88=8F.lua.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 云水 <1494909107@qq.com> --- ...\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" | 1 + 1 file changed, 1 insertion(+) diff --git "a/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/1.\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" "b/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/1.\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" index 6431c92..57cc8c8 100644 --- "a/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/1.\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" +++ "b/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/1.\351\243\236\346\234\272\345\260\217\346\270\270\346\210\217.lua" @@ -6,6 +6,7 @@ -- 从此开始…… -- 简单看了官方的Demo之后,我就以极度粗野的风格写出了几个东西,在现在看了,简直是一个 -- 离谱 +-- 这个时间节点的我,其实不知道这是Lua,不知道函数什么的,就是楞写!!! -- 第一个,试水作:飞机游戏,总体是能运行的,而且是仅能运行! --=============================================================================-- -- Gitee From 2b9b7ff6efee7f539810ff3b8a281191ab9fdce9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E6=B0=B4?= <1494909107@qq.com> Date: Tue, 18 Jul 2023 13:37:19 +0000 Subject: [PATCH 10/12] =?UTF-8?q?add=20lua/Yuns4949=E7=9A=84=E5=9E=83?= =?UTF-8?q?=E5=9C=BE=E6=B8=B8=E6=88=8F=E5=8F=B2/3.=E6=9D=BF=E7=A0=96?= =?UTF-8?q?=E8=AE=B0.lua.=20=E6=B7=BB=E5=8A=A0=20=E6=9D=BF=E7=A0=96?= =?UTF-8?q?=E8=AE=B0.lua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 云水 <1494909107@qq.com> --- ....\346\235\277\347\240\226\350\256\260.lua" | 1985 +++++++++++++++++ 1 file changed, 1985 insertions(+) create mode 100644 "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/3.\346\235\277\347\240\226\350\256\260.lua" diff --git "a/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/3.\346\235\277\347\240\226\350\256\260.lua" "b/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/3.\346\235\277\347\240\226\350\256\260.lua" new file mode 100644 index 0000000..624557a --- /dev/null +++ "b/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/3.\346\235\277\347\240\226\350\256\260.lua" @@ -0,0 +1,1985 @@ + +--=============================================================================-- +-- 总是要成长的…… + +-- 一段时间后,我终于写出了一个真正可玩的游戏:板砖记 +-- 演示视频: https://www.bilibili.com/video/BV1G4411a77F/?spm_id_from=333.999.0.0 +-- 不过代码依旧很狂野 +--=============================================================================-- + + +--=============================================================================-- +-- ■ 加载运行库 +--=============================================================================-- +require "Lib/engine" +require "Sys/扩展_精灵文字" + +--=============================================================================== +-- ■ 初始化屏幕 +--=============================================================================== +引擎 = D2D_引擎.创建("板砖记--*****",50,800,600,true,true,"Dat/图标.ico") +----------调试信息 +a=0 +b=0 +------------ +失败文字=D2D_文字.创建 ("黑体", 30,false,false, true) +失败文字:置颜色(颜色_黄) + +文字 = D2D_文字.创建 ("黑体", 10,false,false, true) +文字:置颜色(颜色_蓝) + +得分文字=D2D_文字.创建 ("黑体", 30,true, true,true) +得分数字 = D2D_精灵文字.创建() + +-----------------图片和音乐载入 +----图片 +帮助素材2=引擎:载入图片("Dat/帮助素材.png") +帮助素材=引擎:载入图片("Dat/帮助.png") +失败界面图片=引擎:载入图片("Dat/失败界面.png") +暂停图片=引擎:载入图片("Dat/暂停.png") +提示一图片=引擎:载入图片("Dat/提示1.png") +背景图片1=引擎:载入图片("Dat/背景1.png") +背景图片2=引擎:载入图片("Dat/建筑后.png") +背景图片3=引擎:载入图片("Dat/建筑中.png") +背景图片4=引擎:载入图片("Dat/建筑前.png") +背景图片5=引擎:载入图片("Dat/建筑前坏.png") +准心图片1=引擎:载入图片("Dat/白准心.png") +准心图片2=引擎:载入图片("Dat/准星.png") +敌人图片=引擎:载入图片("Dat/敌人.png") +敌人图片2=引擎:载入图片("Dat/敌人消失.png") +敌人图片3=引擎:载入图片("Dat/敌人2.png") +敌人图片4=引擎:载入图片("Dat/战车.png") +碎片=引擎:载入图片("Dat/碎片.png") +战车碎片=引擎:载入图片("Dat/战车碎片.png") +水晶碎片=引擎:载入图片("Dat/水晶碎片.png") +物品=引擎:载入图片("Dat/物品.png") +物品栏图片=引擎:载入图片("Dat/物品栏.png") +血条素材=引擎:载入图片("Dat/血条.png") +血条素材2=引擎:载入图片("Dat/血条三.png") +云图片=引擎:载入图片("Dat/云.png") +油灯一=引擎:载入图片("Dat/油灯一.png") +油灯二=引擎:载入图片("Dat/油灯二.png") +血条三=引擎:载入图片("Dat/血条二.png") +主界面图片=引擎:载入图片("Dat/主界面.png") +子弹图片=引擎:载入图片("Dat/子弹.png") +特效=引擎:载入图片("Dat/mainmain.png") +按键图片=引擎:载入图片("Dat/按键.png") +板砖图片=引擎:载入图片("Dat/板砖.png") +砖图片=引擎:载入图片("Dat/砖.png") +爆炸图片=引擎:载入图片("Dat/爆炸.png") +核爆图片=引擎:载入图片("Dat/核爆.png") +维修图片=引擎:载入图片("Dat/维修.png") + +--------------------mainmain-显示 +枪显示1=D2D_精灵.创建(特效,531,0,128,130) +枪显示2=D2D_精灵.创建(特效,662,0,130,130) +弩显示1=D2D_精灵.创建(特效,266,0,130,130) +弩显示2=D2D_精灵.创建(特效,398,0,130,130) +----------------------- + +-----帮助 +帮助背景=D2D_精灵.创建(帮助素材2,0,0,440,440) +帮助精灵=D2D_精灵.创建(帮助素材,0,0,240,1056) +退出按键1=D2D_精灵.创建(帮助素材,273,1,30,30) +退出按键2=D2D_精灵.创建(帮助素材,273,32,30,30) +滑动条=D2D_精灵.创建(帮助素材,265,94,25,165) +滑块=D2D_精灵.创建(帮助素材,261,280,30,30) +滑块:置中心点(15,15) +滑块y=173 +帮助y=0 + + +----音乐 +背景音效 = D2D_音效.创建("Dat/背景音效.mp3") +背景音效:播放_高级(40,true) +----其他音效 +坦克音效= D2D_音效.创建("Dat/坦克.MP3") +飞机音效= D2D_音效.创建("Dat/飞机.mp3") +板砖音效= D2D_音效.创建("Dat/飞砖.wav") +弓箭音效= D2D_音效.创建("Dat/弓弩类发射.wav") +枪音效= D2D_音效.创建("Dat/枪.mp3") +敌人攻击音效= D2D_音效.创建("Dat/tankfire.mp3") +受伤音效= D2D_音效.创建("Dat/伤.wav")----主角 +倒地音效= D2D_音效.创建("Dat/敌人消失.wav")----敌人 +碰撞音效=D2D_音效.创建("Dat/碰撞.mp3")----敌人 +高爆=D2D_音效.创建("Dat/高爆.mp3") +降落伞音效=D2D_音效.创建("Dat/降落伞.wav") +核爆音效=D2D_音效.创建("Dat/爆炸事件.wav") +爆炸音效=D2D_音效.创建("Dat/爆炸.mp3") +爆炸消失音效=D2D_音效.创建("Dat/爆.mp3") +-------------------------------爆炸动画 +爆炸= D2D_动画.创建(爆炸图片,11,8,0,0,56,56) +爆炸:播放() +爆炸:置中心点(28,28) +核爆= D2D_动画.创建(核爆图片,27,14,0,0,128,128) +核爆:播放() +核爆:置中心点(64,64) + +-----------------角色创建和角色变量 +----精灵 +---背景 +四层背景=D2D_精灵.创建(背景图片1,0,0,800,600) +三层背景=D2D_精灵.创建(背景图片2,0,0,800,600) +二层背景=D2D_精灵.创建(背景图片3,0,0,800,600) +一层背景=D2D_精灵.创建(背景图片4,0,0,800,600) + + +云1=D2D_精灵.创建(云图片,0,0,300,200) +云2=D2D_精灵.创建(云图片,300,0,300,200) +云3=D2D_精灵.创建(云图片,600,0,200,200) +云={} +for n=1,10 do + h=引擎:取随机整数(1,3) + if(h==1)then + local 临时云={ + x=引擎:取随机整数(0, 800), + y=引擎:取随机整数(0, 100), + 精灵=云1, + x1=引擎:取随机小数(1,3) + } + table.insert(云,临时云) + end + if(h==2)then + local 临时云={ + x=引擎:取随机整数(0, 800), + y=引擎:取随机整数(0, 100), + 精灵=云2, + x1=引擎:取随机小数(1,3) + } + table.insert(云,临时云) + end + if(h==3)then + local 临时云={ + x=引擎:取随机整数(0, 800), + y=引擎:取随机整数(0, 100), + 精灵=云3, + x1=引擎:取随机小数(1,3) + } + table.insert(云,临时云) + end +end + +---开始 +开场提示=D2D_精灵.创建(提示一图片,0,0,572,105) +开始=0 +计时k=200 +开始参数={ +x=800, +y=600, +d=0, +m=1, +} +开始参数2=0 +主界面=D2D_精灵.创建(主界面图片,0,0,300,300) +开始按键1=D2D_精灵.创建(按键图片,50,0,50,50) +开始按键1:置中心点(25,25) +开始按键2=D2D_精灵.创建(按键图片,0,0,50,50) +开始按键2:置中心点(25,25) + +开始按键=开始按键1:取包围盒() + +帮助按键1=D2D_精灵.创建(按键图片,150,0,50,50) +帮助按键1:置中心点(25,25) +帮助按键2=D2D_精灵.创建(按键图片,100,0,50,50) +帮助按键2:置中心点(25,25) +帮助按键=帮助按键1:取包围盒() + + + +---------------战斗素材 +-------准心-- +准星1=D2D_精灵.创建(准心图片1,0,0,100,100) +准星1:置中心点(50,50) +准星2=D2D_精灵.创建(准心图片2,0,0,100,100) +准星2:置中心点(50,50) +准星3=D2D_精灵.创建(准心图片2,100,0,100,100) +准星3:置中心点(50,50) +准星=准星1 + +--------子弹--- +板砖=D2D_精灵.创建(砖图片,0,600,200,200) +板砖:置中心点(100,100) +水泥砖=D2D_精灵.创建(砖图片,0,0,200,200) +水泥砖:置中心点(100,100) +金砖=D2D_精灵.创建(砖图片,0,200,200,200) +金砖:置中心点(100,100) +核砖=D2D_精灵.创建(砖图片,0,400,200,200) +核砖:置中心点(100,100) + +维修=D2D_精灵.创建(维修图片,0,0,50,50) +维修:置中心点(7,23) +维修d=0 +维修按键=维修:取包围盒() +维修状态=1 +碎片q=0 +---------------子弹组---- +目标组={}---------x1,y1,x2,y2,d,m,攻击,类型 +攻击组={} +箭精灵=D2D_精灵.创建(子弹图片,0,0,50,50) +子弹精灵=D2D_精灵.创建(子弹图片,50,0,50,50) +计时z=10 +爆炸组={}--x y 类型 + +--------爆炸-- +碎片1=D2D_精灵.创建(碎片,100,0,30,30) +碎片1:置中心点(15,15) +碎片2=D2D_精灵.创建(碎片,130,0,20,20) +碎片2:置中心点(10,10) +碎片3=D2D_精灵.创建(碎片,150,0,10,10) +碎片3:置中心点(5,5) +碎片4=D2D_精灵.创建(碎片,130,20,20,20) +碎片4:置中心点(10,10) +碎片5=D2D_精灵.创建(碎片,150,25,10,10) +碎片5:置中心点(5,5) +碎片6=D2D_精灵.创建(碎片,170,15,30,30) +碎片6:置中心点(15,15) +碎片盔=D2D_精灵.创建(碎片,0,0,50,50) +碎片盔:置中心点(25,25) +碎片盾=D2D_精灵.创建(碎片,50,0,50,50) +碎片盾:置中心点(25,25) +碎片水晶=D2D_精灵.创建(水晶碎片,0,0,50,50) +碎片水晶:置中心点(25,25) +碎片战车=D2D_精灵.创建(战车碎片,0,0,25,25) +碎片战车:置中心点(12,12) +碎片组={}-----------------------------------碎片组:开始x,开始y,距离(0.5,1,2,3) +敌人碎片组={} +消失动画组={} + + +---------敌人--------------- +----精灵创建 及 数据定义 +敌人11=D2D_精灵.创建(敌人图片,95,0,95,130)----步 +敌人12=D2D_精灵.创建(敌人图片,190,0,95,130) +敌人21=D2D_精灵.创建(敌人图片,385,0,95,130) +敌人22=D2D_精灵.创建(敌人图片,480,0,95,130) +敌人31=D2D_精灵.创建(敌人图片,670,0,95,130) +敌人32=D2D_精灵.创建(敌人图片,765,0,95,130) +敌人41=D2D_精灵.创建(敌人图片4,0,0,270,280)----战车 +敌人42=D2D_精灵.创建(敌人图片4,300,3,270,280) +敌人52=D2D_精灵.创建(敌人图片3,643,0,150,200)-----飞行员1 +敌人51=D2D_精灵.创建(敌人图片3,800,0,150,200)-----飞行员2 +敌人61=D2D_精灵.创建(敌人图片3,260,0,160,150)-----堡垒1 +敌人62=D2D_精灵.创建(敌人图片3,448,0,160,150)-----堡垒2 +飞机=D2D_精灵.创建(敌人图片3,0,190,250,110) + +敌人11:置中心点(40,70) ----步 +敌人12:置中心点(40,70) +敌人21:置中心点(40,70) +敌人22:置中心点(40,70) +敌人31:置中心点(40,70) +敌人32:置中心点(40,70) +敌人41:置中心点(130,220) ----战车 +敌人42:置中心点(130,220) +敌人52:置中心点(75,140)-----飞行员1 +敌人51:置中心点(75,140)-----飞行员2 +敌人61:置中心点(80,90)-----堡垒1 +敌人62:置中心点(80,90)-----堡垒2 +飞机:置中心点(125,55)-----飞机 +飞机x=1500 + +-----敌人产生点 +--------后排25高 +敌人点={} + +暂停精灵=D2D_精灵.创建(暂停图片,0,0,800,600) + +敌人点[1]={x=420,y=250, m=0.4,状态="",位置="左",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--左50 +敌人点[2]={x=500,y=220, m=0.4,状态="",位置="右",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--右50 +敌人点[3]={x=340,y=210, m=0.4,状态="",位置="下",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--下50 +敌人点[4]={x=540,y=170, m=0.4,状态="",位置="下",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--下50 +敌人点[5]={x=620,y=70, m=0.4,状态="",位置="下",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--下50 +--------中排50高 +敌人点[6]={x=200,y=180 ,m=0.6,状态="",位置="下",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--下50 +敌人点[7]={x=720,y=150,m=0.6,状态="",位置="下",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--下50 + +敌人点[8]={x=260,y=310,x2=300,m=0.6,状态="",位置="左",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--左50 +敌人点[9]={x=600,y=310,x2=560,m=0.6,状态="",位置="右",f=1,计时=引擎:取随机整数(100,200),产生系数=0,血量=0,类型="",k=0,临时=0,攻击=0,弹量=0,被击中=0,消失=0}--右50 + +敌人点[10]={x=0,y2=330,y=0,m=0.6,状态="",血量=0,弹量=0,类型="",临时=0,攻击=0,被击中=0,消失=0} +敌人点[11]={x=0,y2=330,y=0,m=0.6,状态="",血量=0,弹量=0,类型="",临时=0,攻击=0,被击中=0,消失=0} +敌人点[12]={x=0,y2=330,y=0,m=0.6,状态="",血量=0,弹量=0,类型="",临时=0,攻击=0,被击中=0,消失=0} + +飞行员产生系数=引擎:取随机整数(2500,3000) +飞行员状态="" + +for n=1,12 do + 敌人点[n].消失动画=D2D_动画.创建(敌人图片2,5,5,0,0,50,50) + 敌人点[n].消失动画:置中心点(8,35) + 敌人点[n].消失动画:播放() +end + +----------------------敌人完-- + +-----失败资源 +失败界面=D2D_精灵.创建(失败界面图片,0,0,400,400) + +失败动画=D2D_动画.创建(敌人图片2,5,2,0,0,50,50) + +失败动画:播放() + +失败=0 + + + +----------UI + + +血条1=D2D_精灵.创建(血条素材,0,0,11,100) +血条2=D2D_精灵.创建(血条素材,13,0,5,100) +体力背景=D2D_精灵.创建(血条素材2,0,0,360,60) +体力前景=D2D_精灵.创建(血条三,0,0,350,50) +体力={} +for n=1,7 do + 体力[n]= D2D_动画.创建(油灯一,3,3,0,0,50,50) + 体力[n]:播放() +end + +物品栏=D2D_精灵.创建(物品栏图片,0,0,370,60) + +弩=D2D_精灵.创建(物品,0,50,50,50) +枪=D2D_精灵.创建(物品,100,50,50,50) +炸弹=D2D_精灵.创建(物品,150,0,50,50) +炸弹:置中心点(25,25) +--------附加 其他物品 +药包=D2D_精灵.创建(物品,0,0,50,50) +药包:置中心点(25,25) +子弹补给=D2D_精灵.创建(物品,50,0,50,50) +子弹补给:置中心点(25,25) +箭补给=D2D_精灵.创建(物品,50,50,50,50) +箭补给:置中心点(25,25) +-------附加完 + +-----换装备按键 +武器1= D2D_包围盒.创建(0,0, 50,50) +武器2= D2D_包围盒.创建(0,0, 50,50) +武器3= D2D_包围盒.创建(0,0, 50,50) +武器4= D2D_包围盒.创建(0,0, 50,50) +武器5= D2D_包围盒.创建(0,0, 50,50) +武器6= D2D_包围盒.创建(0,0, 50,50) +武器7= D2D_包围盒.创建(0,0, 50,50) +-----换装备按键完 + + +---------------游戏变量 +-------墙 +坚固=150 +墙=1 +计时q=50 +主角体力=140 +当前武器="板砖" +当前攻击=7 +当前精度=20 +箭=10 +子弹=10 +当前初始x=800 +当前初始y=600 +当前音效=板砖音效 + +--敌人产生控制-- + +计数=0 + +得分=0 + +当前波数=0 + + + +掉落率=2 +掉落物品=0 +掉落参数=0 + +补给组={} + +倒计时bj=1000 --补给 + + + + + + + + + + +-----------------控制变量 +操作状态="空闲" +游戏状态="开始" +鼠标x=0 +鼠标y=0 +暂停="否" + +--=============================================================================== +-- ■ 屏幕逻辑() +--=============================================================================== +function 屏幕逻辑 () + +--------动画更新----------- +时间 = 引擎:取最后帧时间() + +for n=1,table.getn(体力) do + 体力[n]:更新(时间) +end +爆炸:更新(时间) +核爆:更新(时间) +for n=1,12 do + 敌人点[n].消失动画:更新(时间) +end + + + + +鼠标x,鼠标y= 引擎:取鼠标坐标() + + + --------------背景及显示系统 + for n=1,table.getn(云) do + if(云[n].x<800)then + 云[n].x=云[n].x+云[n].x1/10 + else + 云[n].x=-200 + end + end + + + --------------计分系统 + 当前波数=取整(计数/7)+1 + + + + + + return false +end + + + + +--=============================================================================== +-- ■ 屏幕渲染() +--=============================================================================== +function 屏幕渲染 () + 渲染开始() + 清屏(ARGB(255,128,128,128)) + + --------------暂停系统- + if(暂停=="是")then + 暂停精灵:显示() + if(引擎:取按键按下(键_鼠标左))then + 暂停="否" + end + else + --------------背景及显示系统 + 四层背景:显示() + for n=1,table.getn(云) do + 云[n].精灵:显示_高级(云[n].x,云[n].y,0,0.7,0.5) + 云[n].精灵:置颜色(ARGB(125,255,255,255)) + end + ------后排敌人 + if(游戏状态=="战斗")then + ---------后排敌人产生及显示 + for n=1,5 do + if(敌人点[n].状态=="")and(当前波数>1)then + 敌人点[n].计时=敌人点[n].计时-1 + if(敌人点[n].计时<=0)then + 敌人点[n].状态="产生" + 敌人点[n].产生系数=50 + 敌人点[n].临时=引擎:取随机整数(1,10) + if(当前波数<4)or(敌人点[n].临时<4)then + 敌人点[n].类型=敌人11 + 敌人点[n].k=5 + 敌人点[n].攻击=0.5 + 敌人点[n].血量=7 + else + if(敌人点[n].临时<7)then + 敌人点[n].类型=敌人21 + 敌人点[n].k=5 + 敌人点[n].攻击=0.5 + 敌人点[n].血量=7 + else + 敌人点[n].类型=敌人31 + 敌人点[n].k=5 + 敌人点[n].攻击=0.5 + 敌人点[n].血量=10 + end + end + 敌人点[n].计时=引擎:取随机整数(150,250) + end + end + if(敌人点[n].状态=="产生")then + if(敌人点[n].位置=="左")then + 敌人点[n].类型:显示_高级(敌人点[n].x-敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m) + end + if(敌人点[n].位置=="下")then + 敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y+敌人点[n].产生系数,0,敌人点[n].m,敌人点[n].m) + end + if(敌人点[n].位置=="右")then + 敌人点[n].类型:显示_高级(敌人点[n].x+敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m) + end + 敌人点[n].产生系数=敌人点[n].产生系数-敌人点[n].k + if(敌人点[n].产生系数<=0)then + 敌人点[n].状态="正常" + 敌人点[n].产生系数=引擎:取随机整数(100,120) + end + end + if(敌人点[n].状态=="正常")then + 敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y,0,敌人点[n].m,敌人点[n].m) + 敌人点[n].产生系数=敌人点[n].产生系数-1 + if(敌人点[n].产生系数<=0)then + + if(敌人点[n].类型==敌人11)then + 敌人点[n].类型=敌人12 + 敌人点[n].产生系数=10 + 敌人攻击音效:播放() + if(墙==1)then + 坚固=坚固-敌人点[n].攻击 + else + 主角体力=主角体力-敌人点[n].攻击 + end + elseif(敌人点[n].类型==敌人21)then + 敌人点[n].类型=敌人22 + 敌人点[n].产生系数=10 + 敌人攻击音效:播放() + if(墙==1)then + 坚固=坚固-敌人点[n].攻击 + else + 主角体力=主角体力-敌人点[n].攻击 + end + elseif(敌人点[n].类型==敌人22)then + 敌人点[n].类型=敌人21 + 敌人点[n].产生系数=引擎:取随机整数(100,120) + elseif(敌人点[n].类型==敌人31)then + 敌人点[n].类型=敌人32 + 敌人点[n].产生系数=10 + 敌人攻击音效:播放() + if(墙==1)then + 坚固=坚固-敌人点[n].攻击 + else + 主角体力=主角体力-敌人点[n].攻击 + end + elseif(敌人点[n].类型==敌人32)then + 敌人点[n].类型=敌人31 + 敌人点[n].产生系数=引擎:取随机整数(100,120) + elseif(敌人点[n].类型==敌人12)then + 敌人点[n].类型=敌人11 + 敌人点[n].产生系数=引擎:取随机整数(100,120) + end + + end + end + + end + + end + + + 三层背景:显示() + -------中排敌人 + if(游戏状态=="战斗")then + ---------中排敌人产生及显示 + for n=6,7 do + if(敌人点[n].状态=="")then + 敌人点[n].计时=敌人点[n].计时-1 + if(敌人点[n].计时<=0)then + 敌人点[n].状态="产生" + 敌人点[n].产生系数=50 + 敌人点[n].临时=引擎:取随机整数(1,10) + if(当前波数<4)or(敌人点[n].临时<4)then + 敌人点[n].类型=敌人11 + 敌人点[n].k=5 + 敌人点[n].攻击=0.5 + 敌人点[n].血量=7 + else + if(敌人点[n].临时<7)then + 敌人点[n].类型=敌人21 + 敌人点[n].k=5 + 敌人点[n].攻击=0.5 + 敌人点[n].血量=7 + else + 敌人点[n].类型=敌人31 + 敌人点[n].k=5 + 敌人点[n].攻击=0.5 + 敌人点[n].血量=10 + end + end + 敌人点[n].计时=引擎:取随机整数(100,200) + end + end + if(敌人点[n].状态=="产生")then + if(敌人点[n].位置=="左")then + 敌人点[n].类型:显示_高级(敌人点[n].x-敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m) + end + if(敌人点[n].位置=="下")then + 敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y+敌人点[n].产生系数,0,敌人点[n].m,敌人点[n].m) + end + if(敌人点[n].位置=="右")then + 敌人点[n].类型:显示_高级(敌人点[n].x+敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m) + end + 敌人点[n].产生系数=敌人点[n].产生系数-敌人点[n].k + if(敌人点[n].产生系数<=0)then + 敌人点[n].状态="正常" + 敌人点[n].产生系数=引擎:取随机整数(70,100) + end + end + if(敌人点[n].状态=="正常")then + 敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y,0,敌人点[n].m,敌人点[n].m) + 敌人点[n].产生系数=敌人点[n].产生系数-1 + if(敌人点[n].产生系数<=0)then + + if(敌人点[n].类型==敌人11)then + 敌人点[n].类型=敌人12 + 敌人点[n].产生系数=10 + 敌人攻击音效:播放() + if(墙==1)then + 坚固=坚固-敌人点[n].攻击 + else + 主角体力=主角体力-敌人点[n].攻击 + end + elseif(敌人点[n].类型==敌人21)then + 敌人点[n].类型=敌人22 + 敌人点[n].产生系数=10 + 敌人攻击音效:播放() + if(墙==1)then + 坚固=坚固-敌人点[n].攻击 + else + 主角体力=主角体力-敌人点[n].攻击 + end + elseif(敌人点[n].类型==敌人22)then + 敌人点[n].类型=敌人21 + 敌人点[n].产生系数=引擎:取随机整数(70,100) + elseif(敌人点[n].类型==敌人31)then + 敌人点[n].类型=敌人32 + 敌人点[n].产生系数=10 + 敌人攻击音效:播放() + if(墙==1)then + 坚固=坚固-敌人点[n].攻击 + else + 主角体力=主角体力-敌人点[n].攻击 + end + elseif(敌人点[n].类型==敌人32)then + 敌人点[n].类型=敌人31 + 敌人点[n].产生系数=引擎:取随机整数(70,100) + elseif(敌人点[n].类型==敌人12)then + 敌人点[n].类型=敌人11 + 敌人点[n].产生系数=引擎:取随机整数(70,100) + end + + end + end + + end + + for n=8,9 do + if(敌人点[n].状态=="")then + 敌人点[n].计时=敌人点[n].计时-1 + if(敌人点[n].计时<=0)then + 敌人点[n].状态="产生" + 敌人点[n].产生系数=50 + 敌人点[n].临时=引擎:取随机整数(1,15) + if(当前波数<4)or(敌人点[n].临时<5)then + 敌人点[n].类型=敌人11 + 敌人点[n].k=5 + 敌人点[n].攻击=0.5 + 敌人点[n].血量=7 + else + if(敌人点[n].临时<9)then + 敌人点[n].类型=敌人21 + 敌人点[n].k=5 + 敌人点[n].攻击=0.5 + 敌人点[n].血量=7 + elseif(敌人点[n].临时<13)then + 敌人点[n].类型=敌人31 + 敌人点[n].k=5 + 敌人点[n].攻击=0.5 + 敌人点[n].血量=10 + else + 敌人点[n].类型=敌人41 + 敌人点[n].k=0.4 + 敌人点[n].攻击=0.15 + 敌人点[n].弹量=5 + 敌人点[n].产生系数=100 + 坦克音效:播放() + 敌人点[n].血量=30 + end + end + 敌人点[n].计时=引擎:取随机整数(150,200) + end + end + if(敌人点[n].状态=="产生")then + if(敌人点[n].类型==敌人41)then + if(敌人点[n].位置=="左")then + 敌人点[n].类型:显示_高级(敌人点[n].x2-敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m) + end + if(敌人点[n].位置=="右")then + 敌人点[n].类型:显示_高级(敌人点[n].x2+敌人点[n].产生系数,敌人点[n].y,0,-1*敌人点[n].m,敌人点[n].m) + end + else + if(敌人点[n].位置=="左")then + 敌人点[n].类型:显示_高级(敌人点[n].x-敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m) + end + if(敌人点[n].位置=="下")then + 敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y+敌人点[n].产生系数,0,敌人点[n].m,敌人点[n].m) + end + if(敌人点[n].位置=="右")then + 敌人点[n].类型:显示_高级(敌人点[n].x+敌人点[n].产生系数,敌人点[n].y,0,敌人点[n].m,敌人点[n].m) + end + end + 敌人点[n].产生系数=敌人点[n].产生系数-敌人点[n].k + if(敌人点[n].产生系数<=0)then + 敌人点[n].状态="正常" + 敌人点[n].产生系数=引擎:取随机整数(70,100) + end + end + if(敌人点[n].状态=="正常")then + if(敌人点[n].类型==敌人41)or(敌人点[n].类型==敌人42)then + if(敌人点[n].位置=="右")then + 敌人点[n].类型:显示_高级(敌人点[n].x2,敌人点[n].y,0,-1*敌人点[n].m,敌人点[n].m) + else + 敌人点[n].类型:显示_高级(敌人点[n].x2,敌人点[n].y,0,敌人点[n].m,敌人点[n].m) + end + else + 敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y,0,敌人点[n].m,敌人点[n].m) + end + 敌人点[n].产生系数=敌人点[n].产生系数-1 + if(敌人点[n].产生系数<=0)then + + if(敌人点[n].类型==敌人11)then + 敌人点[n].类型=敌人12 + 敌人点[n].产生系数=10 + 敌人攻击音效:播放() + if(墙==1)then + 坚固=坚固-敌人点[n].攻击 + else + 主角体力=主角体力-敌人点[n].攻击 + end + elseif(敌人点[n].类型==敌人21)then + 敌人点[n].类型=敌人22 + 敌人点[n].产生系数=10 + 敌人攻击音效:播放() + if(墙==1)then + 坚固=坚固-敌人点[n].攻击 + else + 主角体力=主角体力-敌人点[n].攻击 + end + elseif(敌人点[n].类型==敌人22)then + 敌人点[n].类型=敌人21 + 敌人点[n].产生系数=引擎:取随机整数(70,100) + elseif(敌人点[n].类型==敌人31)then + 敌人点[n].类型=敌人32 + 敌人点[n].产生系数=10 + 敌人攻击音效:播放() + if(墙==1)then + 坚固=坚固-敌人点[n].攻击 + else + 主角体力=主角体力-敌人点[n].攻击 + end + elseif(敌人点[n].类型==敌人32)then + 敌人点[n].类型=敌人31 + 敌人点[n].产生系数=引擎:取随机整数(70,100) + elseif(敌人点[n].类型==敌人12)then + 敌人点[n].类型=敌人11 + 敌人点[n].产生系数=引擎:取随机整数(70,100) + elseif(敌人点[n].类型==敌人41)then + 敌人点[n].弹量=敌人点[n].弹量-1 + 敌人点[n].类型=敌人42 + 敌人点[n].产生系数=5 + 敌人攻击音效:播放() + if(墙==1)then + 坚固=坚固-敌人点[n].攻击 + else + 主角体力=主角体力-敌人点[n].攻击 + end + elseif(敌人点[n].类型==敌人42)then + 敌人点[n].类型=敌人41 + if(敌人点[n].弹量<=0)then + 敌人点[n].产生系数=引擎:取随机整数(120,200) + 敌人点[n].弹量=5 + else + 敌人点[n].产生系数=5 + end + end + + end + end + + end + + + + + + + end + + + + 二层背景:显示() + -------前排敌人-- + if(游戏状态=="战斗")then + + if(当前波数>7)and(飞行员状态=="")and(敌人点[10].状态=="")and(敌人点[11].状态=="")and(敌人点[12].状态=="")then + 飞行员产生系数=飞行员产生系数-1 + if(飞行员产生系数<=0)then + 飞行员状态="产生" + 飞机音效:播放() + 飞行员产生系数=引擎:取随机整数(200,3000) + for n=10,12 do + 敌人点[n].x=引擎:取随机整数(300,600) + end + end + end + for n=10,12 do + if(飞行员状态=="产生")then + + 飞机x=飞机x-1 + if(飞机x<-300)then + 飞行员状态="" + 飞机x=1500 + end + 飞机:显示_高级(飞机x,55,0,-1,1) + if(飞机x>=敌人点[n].x-20)and(飞机x<=敌人点[n].x)and(敌人点[n].状态=="")then + 降落伞音效:播放() + 敌人点[n].状态="产生" + 敌人点[n].临时=0 + 敌人点[n].y=100 + 敌人点[n].类型=敌人51 + 敌人点[n].攻击=1.5 + 敌人点[n].血量=30 + end + end + if(敌人点[n].状态=="产生")then + 敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y,0,敌人点[n].m*敌人点[n].临时,敌人点[n].m*敌人点[n].临时) + 敌人点[n].y=敌人点[n].y+0.5 + 敌人点[n].临时=敌人点[n].临时+0.05 + if(敌人点[n].临时>=1)then + 敌人点[n].状态="正常" + 敌人点[n].临时=引擎:取随机整数(200,250) + end + end + if(敌人点[n].状态=="正常")then + 敌人点[n].类型:显示_高级(敌人点[n].x,敌人点[n].y,0,敌人点[n].m,敌人点[n].m) + if(敌人点[n].类型==敌人51)then + 敌人点[n].y=敌人点[n].y+0.25 + end + if(敌人点[n].y>=敌人点[n].y2)and(敌人点[n].类型==敌人51)then + 敌人点[n].类型=敌人61 + 敌人点[n].y=敌人点[n].y2 + 敌人点[n].攻击=0.5 + 敌人点[n].弹量=7 + 敌人点[n].血量=50 + 敌人点[n].临时=引擎:取随机整数(100,150) + end + 敌人点[n].临时=敌人点[n].临时-1 + if(敌人点[n].临时<=0)then + if(敌人点[n].类型==敌人51)then + 敌人点[n].类型=敌人52 + 敌人攻击音效:播放() + 敌人点[n].临时=10 + if(墙==1)then + 坚固=坚固-敌人点[n].攻击 + else + 主角体力=主角体力-敌人点[n].攻击 + end + elseif(敌人点[n].类型==敌人52)then + 敌人点[n].类型=敌人51 + 敌人点[n].临时=引擎:取随机整数(200,250) + elseif(敌人点[n].类型==敌人61)then + 敌人点[n].类型=敌人62 + 敌人攻击音效:播放() + 敌人点[n].弹量=敌人点[n].弹量-1 + if(墙==1)then + 坚固=坚固-敌人点[n].攻击 + else + 主角体力=主角体力-敌人点[n].攻击 + end + 敌人点[n].临时=5 + elseif(敌人点[n].类型==敌人62)then + 敌人点[n].类型=敌人61 + if(敌人点[n].弹量<=0)then + 敌人点[n].临时=引擎:取随机整数(100,150) + 敌人点[n].弹量=7 + else + 敌人点[n].临时=5 + end + end + end + end + end + + end + + 一层背景:显示() + + --开始界面------------------------------------- + if(游戏状态=="开始")then + if(开始==0)then----- + 主界面:显示(20,90) + 开始按键:置位置(675,375) + if(开始按键:检测_点(鼠标x,鼠标y))then + 开始按键1:显示(700,400) + if(引擎:取按键按下(键_鼠标左))then + for n=1,10 do + local 临时碎片={ + ------------------例子 + x=170, + y=210, + d=0, + m=3, + vx=引擎:取随机小数(-15,15), + vy=引擎:取随机小数(-10,1), + 精灵=碎片1 + } + table.insert(碎片组,临时碎片) + end + for n=1,10 do + local 临时碎片={ + x=170, + y=210, + d=0, + m=3, + vx=引擎:取随机小数(-15,15), + vy=引擎:取随机小数(-10,1), + 精灵=碎片3 + } + table.insert(碎片组,临时碎片) + end + for n=1,10 do + local 临时碎片={ + x=170, + y=210, + d=0, + m=3, + vx=引擎:取随机小数(-15,15), + vy=引擎:取随机小数(-10,1), + 精灵=碎片5 + } + table.insert(碎片组,临时碎片) + end + 开始=1 + 板砖音效:播放() + end + else + 开始按键2:显示(700,400) + end + 帮助按键:置位置(675,450) + if(帮助按键:检测_点(鼠标x,鼠标y))then + 帮助按键1:显示(700,475) + if(引擎:取按键按下(键_鼠标左))then---------------帮助 + 滑块y=173 + 游戏状态="帮助" + end + else + 帮助按键2:显示(700,475) + end + end------- + if(开始==1)then + --------开始动画--170,210 + 计时k=计时k-1 + if(开始参数.x-170>10)then + 主界面:显示(20,90) + 板砖:显示_高级(开始参数.x,开始参数.y,开始参数.d,开始参数.m,开始参数.m) + 开始参数.x=170+(开始参数.x-170)*0.95 + 开始参数.y=210+(开始参数.y-210)*0.95 + 开始参数.d=开始参数.d+引擎:取随机小数(0.5,0.7) + 开始参数.m=开始参数.m*0.97 + end + if(开始参数.x-170<10+1)and(开始参数.x-170>10)then + 高爆:播放() + 爆炸:置当前帧(0) + end + if(开始参数.x-170<10)then + + for n=1,table.getn(碎片组)do + 碎片组[n].精灵:显示_高级(碎片组[n].x,碎片组[n].y,碎片组[n].d,碎片组[n].m,碎片组[n].m) + 碎片组[n].x=碎片组[n].x+碎片组[n].vx + 碎片组[n].y=碎片组[n].y+碎片组[n].vy + 碎片组[n].vy=碎片组[n].vy+0.2 + 碎片组[n].d=碎片组[n].d+引擎:取随机小数(0.5,0.7) + end + if(开始参数2==0)then + 爆炸:显示_高级(170,210,0,3,3) + if(爆炸:取当前帧()==10)then + 开始参数2=1 + end + end + if(计时k<60)then + 开场提示:显示(65,50) + end + end + --------数据初始 + if(计时k<0)then + for n=1,table.getn(碎片组)do + table.remove(碎片组,n) + break + end + 计时k=200 + 开始=0 + 开始参数.x=800 + 开始参数.y=600 + 开始参数.d=0 + 开始参数.m=1 + 开始参数2=0 + 游戏状态="战斗" + end + end + end + + ----帮助 + if(游戏状态=="帮助")then + 帮助背景:显示_高级(170,70,0,1.13,1.04) + 帮助y=(滑块y-173)*850/306 + 帮助精灵:置显示区域(0,帮助y,241,200) + 帮助精灵:显示_高级(200,100,0,400/241,2) + 滑动条:显示_高级(600,150,0,5/3,350/165) + 滑块:显示_高级(621,滑块y,0,1.4,1.4) + 退出按键1:显示_高级(600,100,0,1.6,1.6) + if(退出按键1:取包围盒():检测_点(鼠标x,鼠标y))then + 退出按键2:显示_高级(600,100,0,1.6,1.6) + if(引擎:取按键按下(键_鼠标左))then + 游戏状态="开始" + end + end + --173,479 + if(滑块:取包围盒():检测_点(鼠标x,鼠标y))and(引擎:取按键事件(键_鼠标左))then + if(鼠标y<=173)then + 滑块y=173 + elseif(鼠标y>=479)then + 滑块y=479 + else + 滑块y=鼠标y + end + end + + end + + + if(游戏状态=="战斗")then + ----------------战斗界面----- + --------敌人产生系统------- + + --------------射击系统 + + if(引擎:取按键按下(键_鼠标左))and(操作状态=="空闲")then + if(墙==0)or(鼠标x>600)or(鼠标y<370)then + 操作状态="战斗" + 当前音效:播放() + -----添加-子弹-- + local 临时目标={ + x1=鼠标x+引擎:取随机小数(-1*当前精度,当前精度), + y1=鼠标y+引擎:取随机小数(-1*当前精度,当前精度), + x2=当前初始x, + y2=当前初始y, + d=0, + m=1, + 攻击=当前攻击, + 类型=当前武器 + } + + table.insert(目标组,临时目标) + + if(当前武器=="弩")then + 箭=箭-1 + end + if(当前武器=="枪")then + 子弹=子弹-1 + end + if(当前武器=="金砖")and(得分>10)then + 得分=得分-10 + end + end + end + + if(操作状态=="战斗")then + 计时z=计时z-1 + if(计时z<0)then + 操作状态="待机" + 计时z=10 + end + end + if(操作状态=="待机")then + 计时z=计时z-1 + if(计时z<0)then + 操作状态="空闲" + 计时z=10 + end + end + + --------系统显示---- + + if(操作状态=="空闲")then + ------------------ + + if(当前武器=="板砖")then + 板砖:显示(750,550) + end + if(当前武器=="水泥砖")then + 水泥砖:显示(750,550) + end + if(当前武器=="金砖")then + 金砖:显示(750,550) + end + if(当前武器=="核砖")then + 核砖:显示(750,550) + end + if(当前武器=="炸弹")then + 炸弹:显示_高级(750,550,0,3,3) + end + if(当前武器=="弩")then + 弩显示2:显示_高级(540,340,0,2,2) + end + if(当前武器=="枪")then + 枪显示1:显示_高级(542,340,0,2,2) + end + + + -------------- + end + + ------ + + if(操作状态=="待机")then + -------------- + + if(当前武器=="板砖")then + 板砖:显示(750,610) + end + if(当前武器=="水泥砖")then + 水泥砖:显示(750,610) + end + if(当前武器=="金砖")then + 金砖:显示(750,610) + end + if(当前武器=="核砖")then + 核砖:显示(750,610) + end + if(当前武器=="炸弹")then + 炸弹:显示_高级(750,610,0,3,3) + end + if(当前武器=="弩")then + 弩显示1:显示_高级(540,340,0,2,2) + end + if(当前武器=="枪")then + 枪显示1:显示_高级(542,340,0,2,2) + end + + ----------------- + end + + if(操作状态=="战斗")then + if(当前武器=="弩")then + 弩显示1:显示_高级(540,340,0,2,2) + end + if(当前武器=="枪")then + 枪显示2:显示_高级(540,340,0,2,2) + end + + + end + ----特殊武器判断 + + if(当前武器=="金砖")then + 掉落率=20 + else + 掉落率=2 + end + + if(当前武器=="核砖")then + 主角体力=主角体力-0.04 + end + + if(当前武器=="水泥砖")and(坚固<150)then + 维修:显示_高级(75,570,维修d,1.5,1.5) + 维修按键:置位置(75,550) + if(维修按键:检测_点(鼠标x,鼠标y))then + 坚固=坚固+0.075 + if(维修状态==1)then + 维修d=维修d+0.05 + if(维修d>0.45)then + 维修状态=0 + end + end + if(维修状态==0)then + 维修d=维修d-0.05 + if(维修d<-0.45)then + 维修状态=1 + end + end + else + 维修状态=1 + 维修d=0 + end + end + + if(当前武器=="弩")and(箭==0)then + 当前武器="板砖" + 准星=准星1 + 当前精度=20 + 当前攻击=7 + 当前初始x=800 + 当前初始y=600 + 当前音效=板砖音效 + end + if(当前武器=="金砖")and(得分<15)then + 当前武器="板砖" + 准星=准星1 + 当前精度=20 + 当前攻击=7 + 当前初始x=800 + 当前初始y=600 + 当前音效=板砖音效 + end + if(当前武器=="枪")and(子弹==0)then + 当前武器="板砖" + 准星=准星1 + 当前精度=20 + 当前攻击=7 + 当前初始x=800 + 当前初始y=600 + 当前音效=板砖音效 + end + + + -------子弹显示---------- + for n=1,table.getn(目标组)do + + if(目标组[n].类型=="板砖")then + 板砖:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,目标组[n].m,目标组[n].m) + 目标组[n].d=目标组[n].d+引擎:取随机小数(0,1) + end + if(目标组[n].类型=="水泥砖")then + 水泥砖:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,目标组[n].m,目标组[n].m) + 目标组[n].d=目标组[n].d+引擎:取随机小数(0,1) + end + if(目标组[n].类型=="金砖")then + 金砖:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,目标组[n].m,目标组[n].m) + 目标组[n].d=目标组[n].d+引擎:取随机小数(0,1) + end + if(目标组[n].类型=="核砖")then + 核砖:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,目标组[n].m,目标组[n].m) + 目标组[n].d=目标组[n].d+引擎:取随机小数(0,1) + end + if(目标组[n].类型=="弩")then + 箭精灵:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,3*目标组[n].m,3*目标组[n].m) + end + if(目标组[n].类型=="枪")then + 子弹精灵:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,目标组[n].m,目标组[n].m) + end + if(目标组[n].类型=="炸弹")then + 炸弹:显示_高级(目标组[n].x2,目标组[n].y2,目标组[n].d,5*目标组[n].m,5*目标组[n].m) + 目标组[n].d=目标组[n].d+引擎:取随机小数(0,1) + end + + 目标组[n].x2=目标组[n].x1+(目标组[n].x2-目标组[n].x1)*0.95 + 目标组[n].y2=目标组[n].y1+(目标组[n].y2-目标组[n].y1)*0.95 + 目标组[n].m=目标组[n].m*0.96 + + if((目标组[n].y2-目标组[n].y1)<=5)then + if(目标组[n].类型=="炸弹")then + if(引擎:取随机整数(0,100)>50)then + local 临时爆炸={ + x=目标组[n].x1, + y=目标组[n].y1, + 类型= D2D_动画.创建(爆炸图片,11,8,0,0,56,56), + 威力=50, + m=2, + l=10 + } + 临时爆炸.类型:播放(28,28) + 临时爆炸.类型:置中心点(32,32) + 爆炸音效:播放() + table.insert(爆炸组,临时爆炸) + end + elseif(目标组[n].类型=="核砖")then + local 临时爆炸={ + x=目标组[n].x1, + y=目标组[n].y1, + 类型= D2D_动画.创建(核爆图片,27,14,0,0,128,128), + 威力=100, + m=1.5, + l=26 + } + 临时爆炸.类型:播放() + 临时爆炸.类型:置中心点(64,64) + table.insert(爆炸组,临时爆炸) + 核爆音效:播放() + else + local 临时攻击={x=目标组[n].x1,y=目标组[n].y1,攻击力=目标组[n].攻击} + table.insert(攻击组,临时攻击) + end + table.remove(目标组,n) + break + end + end + + for n=1,table.getn(爆炸组) do + 爆炸组[n].类型:更新(时间) + 爆炸组[n].类型:显示_高级(爆炸组[n].x,爆炸组[n].y,0,爆炸组[n].m,爆炸组[n].m) + if(爆炸组[n].类型:取当前帧()==1)then + for m=1,12 do + if(敌人点[m].状态=="正常")and(敌人点[m].被击中==0)then + if(爆炸组[n].类型:取包围盒():检测_点(敌人点[m].x,敌人点[m].y))then + 敌人点[m].血量=敌人点[m].血量-爆炸组[n].威力 + 敌人点[m].被击中=1 + end + end + end + end + if(爆炸组[n].类型:取当前帧()==爆炸组[n].l)then + table.remove(爆炸组,n) + break + end + end + + + -------大招系统 + + + + + + + --------------游戏判断 + + ------击中判断-- + for n=1,table.getn(攻击组) do + for m=1,12 do + if(敌人点[m].状态=="正常")and(敌人点[m].被击中==0)then + if(2500>((敌人点[m].x-攻击组[n].x)*(敌人点[m].x-攻击组[n].x)+(敌人点[m].y-攻击组[n].y-20)*(敌人点[m].y-攻击组[n].y-20))/敌人点[m].m)then + 敌人点[m].血量=敌人点[m].血量-攻击组[n].攻击力 + 敌人点[m].被击中=1 + table.remove(攻击组,n) + break + end + end + end + table.remove(攻击组,n) + break + end + + + + + + + + ------------敌人受伤动画-- + + + for n=1,12 do + --准备 + if(敌人点[n].被击中==1)and(敌人点[n].状态=="正常")then + if(敌人点[n].类型==敌人11)or(敌人点[n].类型==敌人12)then + 敌人点[n].消失动画:置当前帧(0) + elseif(敌人点[n].类型==敌人51)or(敌人点[n].类型==敌人52)or(敌人点[n].类型==敌人61)or(敌人点[n].类型==敌人62)then + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片水晶,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-7,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片水晶,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-7,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片3,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-7,0)} + table.insert(敌人碎片组,临时碎片) + 碰撞音效:播放() + elseif(敌人点[n].类型==敌人41)or(敌人点[n].类型==敌人42)then + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片战车,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片战车,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片1,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)} + table.insert(敌人碎片组,临时碎片) + 碰撞音效:播放() + else + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片1,vx=引擎:取随机小数(-15,15),vy=引擎:取随机小数(-10,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片2,vx=引擎:取随机小数(-15,15),vy=引擎:取随机小数(-10,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片3,vx=引擎:取随机小数(-15,15),vy=引擎:取随机小数(-10,0)} + table.insert(敌人碎片组,临时碎片) + 碰撞音效:播放() + end + 敌人点[n].被击中=2 + end + --播放 + if(敌人点[n].被击中==2)then + if(敌人点[n].类型==敌人11)or(敌人点[n].类型==敌人12)then + 敌人点[n].消失动画:显示_高级(敌人点[n].x,敌人点[n].y,0,2*敌人点[n].m,2*敌人点[n].m) + if(敌人点[n].消失动画:取当前帧()==4)then + 敌人点[n].被击中=0 + end + else + 敌人点[n].被击中=0 + end + end + + + if(敌人点[n].血量<=0)and(敌人点[n].状态=="正常")then + --准备 + if(敌人点[n].消失==0)then + if(敌人点[n].类型==敌人11)or(敌人点[n].类型==敌人12)then + 倒地音效:播放() + 敌人点[n].消失动画:置当前帧(0) + else + if(敌人点[n].类型==敌人41)or(敌人点[n].类型==敌人42)or(敌人点[n].类型==敌人61)or(敌人点[n].类型==敌人62)or(敌人点[n].类型==敌人51)or(敌人点[n].类型==敌人52)then + local 临时动画={动画= D2D_动画.创建(爆炸图片,11,8,0,0,56,56),x=敌人点[n].x,y=敌人点[n].y,m=敌人点[n].m} + table.insert(消失动画组,临时动画) + for m=1,table.getn(消失动画组) do + 消失动画组[m].动画:播放() + end + 爆炸消失音效:播放() + end + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片水晶,vx=引擎:取随机小数(-1,1),vy=引擎:取随机小数(-2,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片水晶,vx=引擎:取随机小数(-1,1),vy=引擎:取随机小数(-2,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片1,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片战车,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片战车,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片1,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片1,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片2,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)} + table.insert(敌人碎片组,临时碎片) + local 临时碎片={x=敌人点[n].x,y=敌人点[n].y,d=0,类型=碎片3,vx=引擎:取随机小数(-5,5),vy=引擎:取随机小数(-10,0)} + table.insert(敌人碎片组,临时碎片) + end + 敌人点[n].消失=1 + end + --播放--计分-- + if(敌人点[n].消失==1)then + if(敌人点[n].类型==敌人11)or(敌人点[n].类型==敌人12)then + 敌人点[n].消失动画:显示_高级(敌人点[n].x,敌人点[n].y,0,2,2) + if(敌人点[n].消失动画:取当前帧()==4)then + 敌人点[n].状态="" + 敌人点[n].消失=0 + 计数=计数+1 + 得分=得分+10 + 掉落参数=引擎:取随机整数(0,100) + if(掉落参数>100-掉落率)then + 掉落物品=引擎:取随机整数(1,3) + end + 掉落参数=0 + end + else + if(敌人点[n].类型==敌人21)or(敌人点[n].类型==敌人22)or(敌人点[n].类型==敌人31)or(敌人点[n].类型==敌人32)then + 敌人点[n].类型=敌人11 + 敌人点[n].攻击=0.5 + 敌人点[n].血量=7 + 得分=得分+10 + else + 敌人点[n].状态="" + 得分=得分+10 + end + 敌人点[n].消失=0 + end + end + end + end + + for m=1,table.getn(消失动画组) do + 消失动画组[m].动画:置中心点(28,28) + 消失动画组[m].动画:更新(时间) + 消失动画组[m].动画:显示_高级(消失动画组[m].x,消失动画组[m].y,0,4*消失动画组[m].m,4*消失动画组[m].m) + if(消失动画组[m].动画:取当前帧()==10)then + table.remove(消失动画组,m) + break + end + end + + for n=1,table.getn(敌人碎片组)do + 敌人碎片组[n].类型:显示_高级(敌人碎片组[n].x,敌人碎片组[n].y,敌人碎片组[n].d,0.5,0.5) + 敌人碎片组[n].x=敌人碎片组[n].x+敌人碎片组[n].vx + 敌人碎片组[n].y=敌人碎片组[n].y+敌人碎片组[n].vy + 敌人碎片组[n].vy=敌人碎片组[n].vy+0.1 + 敌人碎片组[n].d=敌人碎片组[n].d+引擎:取随机小数(0.5,0.7) + if(敌人碎片组[n].vy>4)then + table.remove(敌人碎片组,n) + break + end + end + + + ------动画完-- + + ---------奖励判断-- + if(倒计时bj>0)then + 倒计时bj=倒计时bj-1 + else + 掉落物品=引擎:取随机整数(1,3) + 倒计时bj=1000 + end + + if(掉落物品==1)then + local 临时物品={类型=药包,x=引擎:取随机整数(200,600),y=0} + table.insert(补给组,临时物品) + elseif(掉落物品==2)then + local 临时物品={类型=子弹补给,x=引擎:取随机整数(200,600),y=0} + table.insert(补给组,临时物品) + elseif(掉落物品==3)then + local 临时物品={类型=箭补给,x=引擎:取随机整数(200,600),y=0} + table.insert(补给组,临时物品) + end + + 掉落物品=0 + + for n=1,table.getn(补给组) do + 补给组[n].类型:显示(补给组[n].x,补给组[n].y) + if(补给组[n].y<340)then + 补给组[n].y=补给组[n].y+1 + end + if(补给组[n].类型:取包围盒():检测_点(鼠标x,鼠标y))then + 操作状态="拾取" + if(引擎:取按键按下(键_鼠标左))then + 操作状态="空闲" + if(补给组[n].类型==药包)then + if(主角体力<=120)then + 主角体力=主角体力+20 + else + 主角体力=140 + end + elseif(补给组[n].类型==箭补给)then + 箭=箭+10 + else + 子弹=子弹+10 + end + table.remove(补给组,n) + break + end + else + 操作状态="空闲" + end + end + + + -------城墙判断 + if(坚固<0)then + 坚固=0 + end + + if(坚固<=0)and(墙==1)then + if(碎片q==0)then + for n=1,50 do + local 临时碎片={ + ------------------例子 + x=引擎:取随机整数(200,450), + y=引擎:取随机整数(400,500), + d=0, + m=3, + vx=引擎:取随机小数(-15,15), + vy=引擎:取随机小数(-10,1), + 精灵=碎片1 + } + table.insert(碎片组,临时碎片) + end + for n=1,50 do + local 临时碎片={ + x=引擎:取随机整数(200,450), + y=引擎:取随机整数(400,500), + d=0, + m=3, + vx=引擎:取随机小数(-15,15), + vy=引擎:取随机小数(-10,1), + 精灵=碎片2 + } + table.insert(碎片组,临时碎片) + end + 高爆:播放() + for n=1,50 do + local 临时碎片={ + x=引擎:取随机整数(200,450), + y=引擎:取随机整数(400,500), + d=0, + m=3, + vx=引擎:取随机小数(-15,15), + vy=引擎:取随机小数(-10,1), + 精灵=碎片3 + } + table.insert(碎片组,临时碎片) + end + 碎片q=1 + end + 计时q=计时q-1 + for n=1,table.getn(碎片组)do + 碎片组[n].精灵:显示_高级(碎片组[n].x,碎片组[n].y,碎片组[n].d,碎片组[n].m,碎片组[n].m) + 碎片组[n].x=碎片组[n].x+碎片组[n].vx + 碎片组[n].y=碎片组[n].y+碎片组[n].vy + 碎片组[n].vy=碎片组[n].vy+0.2 + 碎片组[n].d=碎片组[n].d+引擎:取随机小数(0.5,0.7) + end + if(计时q<0)then + 一层背景:置图片(背景图片5) + 墙=0 + 计时q=50 + for n=1,table.getn(碎片组)do + table.remove(碎片组,n) + break + end + 碎片q=0 + end + end + if(墙==0)then + if(坚固>10)then + 墙=1 + 一层背景:置图片(背景图片4) + end + end + + + end + ---------------战斗代码完--- + + -----------------UI----------- + if(游戏状态=="战斗")then + 血条1:显示_高级(10,397,0,2,2.04) + 血条2:显示_高级(14,600-4/3*坚固,0,2.8,坚固/75) + end + + + if(游戏状态=="战斗")and(失败==0)then + ---------------------------主角体力-- + 体力背景:显示() + + 体力前景:显示_高级(主角体力*2.5,0,0,(140-主角体力)*2.5/350,1) + + for n=1,table.getn(体力) do + 体力[n]:显示(50*(n-1),0) + end + + for n=1,取整(主角体力/20) do + 体力[n]:置图片(油灯一) + end + + for n=取整(主角体力/20)+2,7 do + 体力[n]:置图片(油灯二) + end + + 物品栏:显示(190,540) + ------物品显示及操作------ + 板砖:显示_高级(225,575,0,0.25,0.25) + 水泥砖:显示_高级(275,575,0,0.25,0.25) + 金砖:显示_高级(325,575,0,0.25,0.25) + 核砖:显示_高级(375,575,0,0.25,0.25) + 弩:显示(400,550) + 枪:显示(450,550) + 炸弹:显示(525,575) + + 文字:显示(430,590,箭) + 文字:显示(480,590,子弹) + + ------ + 武器1:置位置(200,550) + 武器2:置位置(250,550) + 武器3:置位置(300,550) + 武器4:置位置(350,550) + 武器5:置位置(400,550) + 武器6:置位置(450,550) + 武器7:置位置(500,550) + + -----------------------------换武器-- + + if(武器1:检测_点(鼠标x,鼠标y))then + 武器1:显示() + if(引擎:取按键按下(键_鼠标右))then + 当前武器="板砖" + 准星=准星1 + 当前精度=15 + 当前攻击=7 + 当前初始x=800 + 当前初始y=600 + 当前音效=板砖音效 + end + end + if(武器2:检测_点(鼠标x,鼠标y))then + 武器2:显示() + if(引擎:取按键按下(键_鼠标右))then + 当前武器="水泥砖" + 准星=准星1 + 当前精度=10 + 当前攻击=6 + 当前初始x=800 + 当前初始y=600 + 当前音效=板砖音效 + end + end + if(武器3:检测_点(鼠标x,鼠标y))then + 武器3:显示() + if(引擎:取按键按下(键_鼠标右))then + 当前武器="金砖" + 准星=准星1 + 当前精度=20 + 当前攻击=10 + 当前初始x=800 + 当前初始y=600 + 当前音效=板砖音效 + end + end + if(武器4:检测_点(鼠标x,鼠标y))then + 武器4:显示() + if(引擎:取按键按下(键_鼠标右))then + 当前武器="核砖" + 准星=准星1 + 当前精度=50 + 当前攻击=0 + 当前初始x=800 + 当前初始y=600 + 当前音效=板砖音效 + end + end + if(武器5:检测_点(鼠标x,鼠标y))then + 武器5:显示() + if(引擎:取按键按下(键_鼠标右))then + if(箭>0)then + 当前武器="弩" + 准星=准星2 + 当前精度=5 + 当前攻击=15 + 当前初始x=580 + 当前初始y=381 + 当前音效=弓箭音效 + else + -------------------没子弹提示 + + end + end + end + if(武器6:检测_点(鼠标x,鼠标y))then + 武器6:显示() + if(引擎:取按键按下(键_鼠标右))then + if(子弹>0)then + 当前武器="枪" + 准星=准星3 + 当前精度=5 + 当前攻击=20 + 当前初始x=583 + 当前初始y=433 + 当前音效=枪音效 + else + ------------ + + end + end + end + if(武器7:检测_点(鼠标x,鼠标y))then + 武器7:显示() + if(引擎:取按键按下(键_鼠标右))then + 当前武器="炸弹" + 准星=准星1 + 当前精度=40 + 当前攻击=0 + 当前初始x=800 + 当前初始y=600 + 当前音效=板砖音效 + end + end + + + + + + ----------------------- + end + + + + + + + + ---------------------重开系统 + if(主角体力<=1)and(游戏状态== "战斗")then + if(失败==0)then + 受伤音效:播放() + 失败=1 + end + 失败动画:更新(时间) + 失败动画:显示_高级(0,0,0,16,12) + if(失败动画:取当前帧()==4)then + 游戏状态="失败" + 失败=0 + end + end + if(游戏状态=="失败")then + 失败界面:显示(200,100) + 失败文字:显示(420,343,"你猜啊!") + 失败文字:显示(440,393,得分) + + if(引擎:取按键按下(键_回车))then + +---------------游戏变量初始 +-------墙 +坚固=150 +墙=1 +一层背景:置图片(背景图片4) +主角体力=140 +当前武器="板砖" +当前攻击=7 +当前精度=20 +准星=准星1 +箭=10 +子弹=10 +当前初始x=800 +当前初始y=600 +当前音效=板砖音效 +计数=0 +得分=0 +当前波数=0 +掉落率=2 +掉落物品=0 +掉落参数=0 +倒计时bj=1000 --补给 +---------------控制变量 +操作状态="空闲" +for n=1,12 do + 敌人点[n].状态="" +end +for n=1,table.getn(补给组) do + table.remove(补给组,n) + break +end +for n=1,table.getn(爆炸组) do + table.remove(爆炸组,n) + break +end +for n=1,table.getn(攻击组) do + table.remove(攻击组,n) + break +end +for n=1,table.getn(碎片组) do + table.remove(碎片组,n) + break +end +for n=1,table.getn(敌人碎片组) do + table.remove(敌人碎片组,n) + break +end +for n=1,table.getn(消失动画组) do + table.remove(消失动画组,n) + break +end +for n=1,table.getn(目标组) do + table.remove(目标组,n) + break +end +游戏状态="开始" + +---------------完 + end + + + + + end + + + + + + + + + + + ----------动态鼠标 + if(游戏状态=="开始")or(游戏状态=="帮助")then + 引擎:隐藏鼠标(false) + else + 引擎:隐藏鼠标(true) + 准星:显示(鼠标x,鼠标y) + end + + -----------------------得分信息 +if(游戏状态=="战斗")then + 得分文字:置颜色(颜色_红) + 得分文字:显示(625,0,"得分:") + 得分数字:显示(得分,700,0,20,30,255,false) +end + -------------------------- + + end + -----------暂停系统完-- + + 渲染结束() + return false +end + + + + + + + + + +--=============================================================================== +-- ■ 网络数据处理() +--=============================================================================== +function 网络数据处理 (命令,参数1,参数2,附加) + + +end + + + + +--=============================================================================-- +-- ■ 网络连接断开() +--=============================================================================-- +function 网络连接断开 () + + +end + + + +--=============================================================================== +-- ■ 屏幕获得焦点() +--=============================================================================== +function 屏幕获得焦点 () + + + return false +end + + + +--=============================================================================== +-- ■ 屏幕失去焦点() +--=============================================================================== +function 屏幕失去焦点 () + +暂停="是" + + return false +end + + + +--=============================================================================== +-- ■ 屏幕关闭() +--=============================================================================== +function 屏幕关闭 () + + + + return true +end + + + +--=============================================================================== +-- ■ 渲染区保护() +--=============================================================================== +function 渲染区保护 () + + + return false +end + + + + + + + + -- Gitee From 770b544e51ba29f2fbece743fab219ff226b2e5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E6=B0=B4?= <1494909107@qq.com> Date: Tue, 18 Jul 2023 13:41:08 +0000 Subject: [PATCH 11/12] =?UTF-8?q?add=20lua/Yuns4949=E7=9A=84=E5=9E=83?= =?UTF-8?q?=E5=9C=BE=E6=B8=B8=E6=88=8F=E5=8F=B2/4.=E7=89=B9=E7=A7=8D?= =?UTF-8?q?=E8=A1=8C=E5=8A=A8.lua.=20=E6=B7=BB=E5=8A=A0=20=E7=89=B9?= =?UTF-8?q?=E7=A7=8D=E8=A1=8C=E5=8A=A8.lua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 云水 <1494909107@qq.com> --- ...1\347\247\215\350\241\214\345\212\250.lua" | 1003 +++++++++++++++++ 1 file changed, 1003 insertions(+) create mode 100644 "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/4.\347\211\271\347\247\215\350\241\214\345\212\250.lua" diff --git "a/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/4.\347\211\271\347\247\215\350\241\214\345\212\250.lua" "b/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/4.\347\211\271\347\247\215\350\241\214\345\212\250.lua" new file mode 100644 index 0000000..8eb1ab1 --- /dev/null +++ "b/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/4.\347\211\271\347\247\215\350\241\214\345\212\250.lua" @@ -0,0 +1,1003 @@ + +--=============================================================================-- +-- 这个时间点 我已经知道简单的封装了 +-- 在这个游戏中,主角被封装为单独的一个类 +--=============================================================================-- + +--=============================================================================-- +-- ■ 加载运行库 +--=============================================================================-- +require "Lib/engine" +require "Sys/扩展_机械文字" +require "Sys/扩展子弹类" +require "Sys/主角" +require "Sys/数学函数" + +--=============================================================================== +-- ■ 初始化屏幕 +--=============================================================================== +引擎 = D2D_引擎.创建("特种行动--*****",50,800,600,true,true,"Dat/图标.ico") + +文字= D2D_文字.创建("宋体",30,false,false,false) + +中字= D2D_文字.创建("黑体",40,false,false,false) + +大字= D2D_文字.创建("黑体",60,false,false,false) + +血量显示=D2D_机械文字.创建() + +----地图部分 +地图图片={} +地图精灵={} + +for n=1,tonumber(读配置项("Dat/配置.ini","地图总数","地图总数")) do + 地图图片[n]=引擎:载入图片("Dat/地图/" .. 读配置项("Dat/配置.ini","地图名称",tostring(n))) + 地图精灵[n]=D2D_精灵.创建(地图图片[n],0,0,100,100) +end + +----地图部分完 +--=============================================================================== +--其他资源载入 +开始图片=引擎:载入图片("Dat/背景.jpg") +帮助图片=引擎:载入图片("Dat/帮助.png") +开始前景=引擎:载入图片("Dat/主界面.png") +UI素材图片=引擎:载入图片("Dat/ui_default_loading_bar.png") +子弹图片=引擎:载入图片("Dat/蛇身.png") +子弹图片2=引擎:载入图片("Dat/white-ball.png") +子弹图片3=引擎:载入图片("Dat/bullet.png") +粒子素材=引擎:载入图片("Dat/particles.png") +地雷图片=引擎:载入图片("Dat/地雷.png") +背景图片=引擎:载入图片("Dat/背景图片.jpg") +建筑图片=引擎:载入图片("Dat/建筑.png") +树图片=引擎:载入图片("Dat/树.png") +其他素材=引擎:载入图片("Dat/素材.png") +炮塔3图片=引擎:载入图片("Dat/炮塔3.png") + +--一些精灵 +背景精灵=D2D_精灵.创建(背景图片,0,0,800,600) + +--主角创建 +主角=主角.创建() + +--============================================================ +--音效部分---- +子弹音效1= D2D_音效.创建("Dat/tankfire.mp3") ----敌人飞机 +子弹音效2= D2D_音效.创建("Dat/炮.mp3") ----坦克炮 +子弹音效3= D2D_音效.创建("Dat/火箭.mp3") ----主角子弹3 +胜利= D2D_音效.创建("Dat/胜.mp3") +失败= D2D_音效.创建("Dat/败.WAV") +爆炸音效1=D2D_音效.创建("Dat/爆.mp3") ----失败 +爆炸音效2=D2D_音效.创建("Dat/爆炸.WAV") ----坦克报废 +爆炸音效3=D2D_音效.创建("Dat/高爆.mp3") ----建筑倒塌 + +背景音效=D2D_音效.创建("Dat/背景音效.mp3") +背景音效:播放_高级(50,true,1) + +--数据初始 +游戏状态="开始" +当前关卡=1 +地图x=0 +地图y=0 +载入临时=0 +任务计数=0 +任务总数=tonumber(读配置项("Dat/配置.ini",tostring(当前关卡),"目标数量")) + +坦克计数=0 + +--全局常量引入 +mt=tonumber(读配置项("Dat/配置.ini",tostring(当前关卡),"坦克上限")) +mf=tonumber(读配置项("Dat/配置.ini",tostring(当前关卡),"飞机上限")) + +载入速度=tonumber(读配置项("Dat/配置.ini","全局设置","地图载入速度"))*50 + + +--不初始数据 +主角子弹组={} +敌人子弹组={} +地图物件组={} +敌人组={} +坦克组={} +飞机组={} +地雷组={} +P=0.017453 + +----游戏特效 +帮助精灵=D2D_精灵.创建(帮助图片,0,0,400,200) + +粒子精灵=D2D_精灵.创建(粒子素材,0,0,32,32) +粒子精灵:置混合模式(1) + +滚动框背景精灵 = D2D_精灵.创建(UI素材图片,1,57,250,30) +填充精灵 = D2D_精灵.创建(UI素材图片,1,29,26,26) +填充头精灵 = D2D_精灵.创建(UI素材图片,84,30,7,24) + +开始精灵= D2D_精灵.创建(开始图片,0,0,400,300) +开始精灵2= D2D_精灵.创建(开始前景,0,0,400,300) +开始按键=D2D_包围盒.创建(0,0,120,60) + +临时x=0 +临时y=0 + +类型x1=0 +临时y1=0 + +胜利计时=0 +失败计时=0 + +鼠标x=0 +鼠标y=0 + +爆炸组={} + +通关计时=50 + +--=============================================================================== +-- ■ 屏幕逻辑() +--=============================================================================== +function 屏幕逻辑 () + + 时间=引擎:取最后帧时间() + + 主角:更新() + + 鼠标x,鼠标y = 引擎:取鼠标坐标 () + + ----载入地图 +if(游戏状态=="载入地图")then + 坦克计数=0 + 任务总数=tonumber(读配置项("Dat/配置.ini",tostring(当前关卡),"目标数量")) + mt=tonumber(读配置项("Dat/配置.ini",tostring(当前关卡),"坦克上限")) + mf=tonumber(读配置项("Dat/配置.ini",tostring(当前关卡),"飞机上限")) + for a=-1,tonumber(读配置项("Dat/配置.ini","地图大小",tostring(当前关卡))) do + for b=-1,tonumber(读配置项("Dat/配置.ini","地图大小",tostring(当前关卡))) do + if(地图精灵[当前关卡]:取像素值(a,b)==(ARGB(255,100,0,0)))then + local 地图物件={ + 精灵=D2D_精灵.创建(建筑图片,0,0,200,200), + 包围盒=D2D_包围盒.创建(0,0,180,120), + x=a*100+100, + y=b*100+100, + 类型="坦克工厂", + 血量=100, + 生产计时=300, + } + 地图物件.精灵:置中心点(100,100) + table.insert(地图物件组,地图物件) + end + if(地图精灵[当前关卡]:取像素值(a,b)==(ARGB(255,100,100,0)))then + local 地图物件={ + 精灵=D2D_精灵.创建(建筑图片,200,0,200,200), + 包围盒=D2D_包围盒.创建(0,0,196,196), + x=a*100+100, + y=b*100+100, + 类型="飞机工厂", + 血量=100, + 生产计时=600, + } + 地图物件.精灵:置中心点(100,100) + table.insert(地图物件组,地图物件) + end + if(地图精灵[当前关卡]:取像素值(a,b)==(ARGB(255,100,100,100)))then + local 地图物件={ + 精灵=D2D_精灵.创建(建筑图片,400,0,200,200), + 包围盒=D2D_包围盒.创建(0,0,196,196), + x=a*100+100, + y=b*100+100, + 类型="指挥部", + 血量=200 + } + 地图物件.精灵:置中心点(100,100) + table.insert(地图物件组,地图物件) + end + if(地图精灵[当前关卡]:取像素值(a,b)==(ARGB(255,0,0,100)))or(a==-1)or(a==tonumber(读配置项("Dat/配置.ini","地图大小",tostring(当前关卡))))or(b==-1)or(b==tonumber(读配置项("Dat/配置.ini","地图大小",tostring(当前关卡))))then + local 地图物件={ + 精灵=D2D_精灵.创建(树图片,10,0,100,147), + 包围盒=D2D_包围盒.创建(0,0,100,100), + x=a*100, + y=b*100-47, + 类型="树", + 血量=20 + } + table.insert(地图物件组,地图物件) + end + if(地图精灵[当前关卡]:取像素值(a,b)==(ARGB(255,100,0,100)))then + local 敌人={ + 精灵=D2D_精灵.创建(其他素材,413,0,64,64), + 精灵2=D2D_精灵.创建(其他素材,123,0,38,64), + 包围盒=D2D_包围盒.创建(0,0,64,64), + x=a*100+50, + y=b*100+50, + 方向=0, + 方向2=0, + 类型="炮", + 血量=100, + 攻击冷却=100 + } + 敌人.精灵:置中心点(32,32) + 敌人.精灵2:置中心点(19,19) + table.insert(敌人组,敌人) + end + if(地图精灵[当前关卡]:取像素值(a,b)==(ARGB(255,0,100,100)))then + local 地雷={ + 精灵=D2D_精灵.创建(地雷图片,0,0,32,32), + 包围盒=D2D_包围盒.创建(0,0,32,32), + x=a*100+34, + y=b*100+34 + } + 地雷.精灵:置颜色(ARGB(100,0,0,0)) + table.insert(地雷组,地雷) + end + end + end + 主角.主角.x=tonumber(读配置项("Dat/配置.ini",tostring(当前关卡),"初始位置x"))*100+50 + 主角.主角.y=tonumber(读配置项("Dat/配置.ini",tostring(当前关卡),"初始位置y"))*100+50 + 地图x=400-主角.主角.x + 地图y=300-主角.主角.y + 游戏状态="载入地图2" +end + + ----地图载入完 + + + + + + + + + return false +end + + + + +--=============================================================================== +-- ■ 屏幕渲染() +--=============================================================================== +function 屏幕渲染 () + 渲染开始() + 清屏(ARGB(255,128,128,128)) + + if(游戏状态=="开始")then + 开始精灵:显示_高级(0,0,0,2,2) + 开始精灵2:显示_高级(0,100,0,1.8,1.8) + 文字_描边显示(大字,400,0,"特",ARGB(255,255,201,14),ARGB(255,255,0,255)) + 文字_描边显示(大字,500,100,"种",ARGB(255,255,201,14),ARGB(255,255,0,255)) + 文字_描边显示(大字,600,50,"行",ARGB(255,255,201,14),ARGB(255,255,0,255)) + 文字_描边显示(大字,700,150,"动",ARGB(255,255,201,14),ARGB(255,255,0,255)) + 文字_描边显示(大字,300,500,"开始",ARGB(255,255,0,0),ARGB(255,0,0,0)) + 开始按键:置位置(300,500) + if(开始按键:检测_点(鼠标x,鼠标y))then + 文字_描边显示(大字,300,500,"开始",ARGB(255,0,0,0),ARGB(255,255,0,0)) + if(引擎:取按键按下(键_鼠标左))then + 游戏状态="清空" + end + end + end + + if(游戏状态=="载入地图")or(游戏状态=="清空")then + 开始精灵:显示_高级(0,0,0,2,2) + 文字_描边显示2(文字,210,250,"!正在初始化,请稍候!",ARGB(255,0,0,0),ARGB(255,255,255,255)) + end + + if(游戏状态=="载入地图2")then + 开始精灵:显示_高级(0,0,0,2,2) + 帮助精灵:显示(200,100) + if(载入临时<=载入速度)then + 载入临时=载入临时+1 + 文字_描边显示2(文字,340,350,"!载入中!",ARGB(255,0,0,0),ARGB(255,255,255,255)) + else + 文字_描边显示2(文字,400-8*string.len(读配置项("Dat/配置.ini",tostring(当前关卡),"任务描述")),400,读配置项("Dat/配置.ini",tostring(当前关卡),"任务描述"),ARGB(255,288,0,0),ARGB(255,0,0,255)) + 文字_描边显示2(文字,240,350,"!载入完毕,点击开始!",ARGB(255,0,0,0),ARGB(255,255,255,255)) + if(引擎:取按键按下(键_鼠标左))then + 游戏状态="战斗" + 载入临时=0 + end + end + 填充精灵:显示_高级(270,500,0,载入临时* 242/(26*载入速度),1) + 填充头精灵:显示(270+载入临时*242/载入速度 -4,501) + 滚动框背景精灵:显示(270,500) + + end + + ----胜负界面---- + if(游戏状态=="胜")then + 开始精灵:显示_高级(0,0,0,2,2) + 文字_描边显示2(文字,240,350,"!恭喜通关,点击继续!",ARGB(255,0,0,0),ARGB(255,255,255,255)) + if(引擎:取按键按下(键_鼠标左))then + 初始化() + 当前关卡=当前关卡+1 + if(当前关卡=0)then + 敌人组[n].攻击冷却=敌人组[n].攻击冷却-1 + end + + if(敌人组[n].类型=="炮")then + + --击中-- + for m=1,table.getn(主角子弹组) do + if(敌人组[n].包围盒:检测_点(主角子弹组[m].子弹.起点x+地图x,主角子弹组[m].子弹.起点y+地图y))then + if(主角子弹组[m].类型==1)then + 敌人组[n].血量=敌人组[n].血量-10 + end + if(主角子弹组[m].类型==2)then + 敌人组[n].血量=敌人组[n].血量-50 + end + if(主角子弹组[m].类型==3)then + break + end + local 临时爆炸={ + x=地图x+敌人组[n].x, + y=地图y+敌人组[n].y, + 类型=D2D_粒子.创建("Dat/爆炸.psi",粒子精灵), + 倒计时=50 + } + table.insert(爆炸组,临时爆炸) + table.remove(主角子弹组,n) + break + end + end + + + + if(取距离平方(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)<550*550)then + --攻击代码 + + if(取距离平方(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)<500*500)and(敌人组[n].攻击冷却<0)then + if((取两点间角度(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)-95)%360<敌人组[n].方向2%360)and((取两点间角度(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)-85)%360>敌人组[n].方向2%360)then + + 临时x,临时y=取移动步幅(敌人组[n].方向2+90) + + local 子弹={ + 子弹=扩展子弹类.创建(敌人组[n].x+临时x*40,敌人组[n].y+临时y*40,敌人组[n].方向2+90,D2D_精灵.创建(子弹图片,0,0,16,16),6), + 射程=500, + 类型=2 + } + table.insert(敌人子弹组,子弹) + 敌人组[n].攻击冷却=100 + 子弹音效2:播放() + else + if((取两点间角度(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)-敌人组[n].方向2-90)%360>180)then + 敌人组[n].方向2=敌人组[n].方向2-3 + else + 敌人组[n].方向2=敌人组[n].方向2+3 + end + end + end + + else + if(敌人组[n].方向2%360>180)then + 敌人组[n].方向2=敌人组[n].方向2-3 + else + 敌人组[n].方向2=敌人组[n].方向2+3 + end + end + end + + if(敌人组[n].类型=="坦克")then + ----产生 + if(敌人组[n].临时>0)then + 敌人组[n].临时=敌人组[n].临时-3 + 敌人组[n].y=敌人组[n].y+3 + end + + ----击中 + for m=1,table.getn(主角子弹组) do + if(敌人组[n].包围盒:检测_点(主角子弹组[m].子弹.起点x+地图x,主角子弹组[m].子弹.起点y+地图y))then + if(主角子弹组[m].类型==2)then + 敌人组[n].血量=敌人组[n].血量-10 + end + if(主角子弹组[m].类型==1)then + 敌人组[n].血量=敌人组[n].血量-50 + end + if(主角子弹组[m].类型==3)then + break + end + local 临时爆炸={ + x=地图x+敌人组[n].x, + y=地图y+敌人组[n].y, + 类型=D2D_粒子.创建("Dat/爆炸.psi",粒子精灵), + 倒计时=50 + } + table.insert(爆炸组,临时爆炸) + table.remove(主角子弹组,n) + break + end + end + + ----防碰撞 + for a=1,table.getn(敌人组) do + if(a==n)then + break + end + if(引擎:包围盒碰撞检测(敌人组[n].包围盒,敌人组[a].包围盒))then + if(敌人组[a].类型=="坦克")then + 敌人组[n].x1,敌人组[n].y1=取移动步幅(敌人组[n].方向+90) + 敌人组[n].x=敌人组[n].x-敌人组[n].x1*4 + 敌人组[n].y=敌人组[n].y-敌人组[n].y1*4 + 敌人组[a].x1,敌人组[a].y1=取移动步幅(敌人组[a].方向+90) + 敌人组[a].x=敌人组[a].x+敌人组[a].x1*4 + 敌人组[a].y=敌人组[a].y+敌人组[a].y1*4 + else + 敌人组[n].x1,敌人组[n].y1=取移动步幅(敌人组[n].方向+90) + 敌人组[n].x=敌人组[n].x+敌人组[n].x1*4 + 敌人组[n].y=敌人组[n].y+敌人组[n].y1*4 + end + end + end + + + ----移动 + if(取距离平方(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)>400*400)and(取距离平方(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)<1000*1000)then + + if((取两点间角度(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)+70)%360<敌人组[n].方向%360)and((取两点间角度(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)+110)%360>敌人组[n].方向%360)then + + + 临时x,临时y=取移动步幅(敌人组[n].方向+90) + 敌人组[n].x=敌人组[n].x-临时x*2 + 敌人组[n].y=敌人组[n].y-临时y*2 + + 敌人组[n].包围盒:置位置(地图x+敌人组[n].x-32,地图y+敌人组[n].y-32) + + for m=1,table.getn(地图物件组) do + if(引擎:包围盒碰撞检测(地图物件组[m].包围盒,敌人组[n].包围盒))then + 敌人组[n].x=敌人组[n].x+临时x*2 + 敌人组[n].y=敌人组[n].y+临时y*2 + end + end + + else + if((取两点间角度(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)-敌人组[n].方向+90)%360>180)then + 敌人组[n].方向=敌人组[n].方向-2 + else + 敌人组[n].方向=敌人组[n].方向+2 + end + end + end + + ----攻击 + if(取距离平方(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)<550*550)then + --攻击代码 + + if(取距离平方(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)<400*400)and(敌人组[n].攻击冷却<0)then + if((取两点间角度(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)-95)%360<敌人组[n].方向2%360)and((取两点间角度(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)-85)%360>敌人组[n].方向2%360)then + + 临时x,临时y=取移动步幅(敌人组[n].方向2+90) + + local 子弹={ + 子弹=扩展子弹类.创建(敌人组[n].x+临时x*84,敌人组[n].y+临时y*84,敌人组[n].方向2+90,D2D_精灵.创建(子弹图片2,0,0,16,16),6), + 射程=400, + 类型=1 + } + table.insert(敌人子弹组,子弹) + 敌人组[n].攻击冷却=100 + 子弹音效2:播放() + else + if((取两点间角度(地图x+敌人组[n].x,地图y+敌人组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)-敌人组[n].方向2-90)%360>180)then + 敌人组[n].方向2=敌人组[n].方向2-2 + else + 敌人组[n].方向2=敌人组[n].方向2+2 + end + end + end + + else + + if(敌人组[n].方向2>0)then + 敌人组[n].方向2=敌人组[n].方向2-3 + else + 敌人组[n].方向2=敌人组[n].方向2+3 + end + end + + + end + + + if(敌人组[n].血量<0)then + for x=1,5 do + local 临时爆炸={ + x=地图x+敌人组[n].x+引擎:取随机整数(-100,100), + y=地图y+敌人组[n].y+引擎:取随机整数(-100,100), + 类型=D2D_粒子.创建("Dat/爆炸.psi",粒子精灵), + 倒计时=50 + } + table.insert(爆炸组,临时爆炸) + end + if(敌人组[n].类型=="坦克")then + 坦克计数=坦克计数-1 + end + 爆炸音效2:播放() + table.remove(敌人组,n) + break + end + + end + + + --主角 + 主角:显示() + + ----地图物件---- + for n=1,table.getn(地图物件组) do + 地图物件组[n].精灵:显示(地图x+地图物件组[n].x,地图y+地图物件组[n].y) + if(地图物件组[n].类型=="坦克工厂")then + 地图物件组[n].包围盒:置位置(地图x+地图物件组[n].x-93,地图y+地图物件组[n].y-56) + ----坦克出现 + if(地图物件组[n].生产计时<0)and(坦克计数0)then + 飞机组[n].临时=飞机组[n].临时-3 + 飞机组[n].y=飞机组[n].y+3 + end + + ----击中 + for m=1,table.getn(主角子弹组) do + if(飞机组[n].包围盒:检测_点(主角子弹组[m].子弹.起点x+地图x,主角子弹组[m].子弹.起点y+地图y))then + if(主角子弹组[m].类型==2)then + break + end + if(主角子弹组[m].类型==1)then + break + end + if(主角子弹组[m].类型==3)then + 飞机组[n].血量=飞机组[n].血量-50 + end + local 临时爆炸={ + x=地图x+飞机组[n].x, + y=地图y+飞机组[n].y, + 类型=D2D_粒子.创建("Dat/爆炸.psi",粒子精灵), + 倒计时=50 + } + table.insert(爆炸组,临时爆炸) + table.remove(主角子弹组,n) + break + end + end + + ----防碰撞 + for a=n+1,table.getn(飞机组) do + if(引擎:包围盒碰撞检测(飞机组[n].包围盒,飞机组[a].包围盒))then + 飞机组[n].x1,飞机组[n].y1=取移动步幅(飞机组[n].方向+90) + 飞机组[n].x=飞机组[n].x-飞机组[n].x1*4 + 飞机组[n].y=飞机组[n].y-飞机组[n].y1*4 + 飞机组[a].x1,飞机组[a].y1=取移动步幅(飞机组[a].方向+90) + 飞机组[a].x=飞机组[a].x+飞机组[a].x1*4 + 飞机组[a].y=飞机组[a].y+飞机组[a].y1*4 + end + end + + ----移动 + if(取距离平方(地图x+飞机组[n].x,地图y+飞机组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)>400*400)and(取距离平方(地图x+飞机组[n].x,地图y+飞机组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)<1000*1000)then + + if((取两点间角度(地图x+飞机组[n].x,地图y+飞机组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)+70)%360<飞机组[n].方向%360)and((取两点间角度(地图x+飞机组[n].x,地图y+飞机组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)+110)%360>飞机组[n].方向%360)then + 临时x,临时y=取移动步幅(飞机组[n].方向+90) + 飞机组[n].x=飞机组[n].x-临时x*2 + 飞机组[n].y=飞机组[n].y-临时y*2 + else + if((取两点间角度(地图x+飞机组[n].x,地图y+飞机组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)-飞机组[n].方向+90)%360>180)then + 飞机组[n].方向=飞机组[n].方向-2 + else + 飞机组[n].方向=飞机组[n].方向+2 + end + end + end + + + ----攻击 + if(取距离平方(地图x+飞机组[n].x,地图y+飞机组[n].y,主角.主角.x+地图x,主角.主角.y+地图y)<500*500)then + --攻击代码 + + if(飞机组[n].攻击冷却<0)then + local 子弹={ + 子弹=扩展子弹类.创建(飞机组[n].x,飞机组[n].y,取两点间角度(地图x+飞机组[n].x,地图y+飞机组[n].y,主角.主角.x+地图x,主角.主角.y+地图y),D2D_精灵.创建(子弹图片3,0,0,24,24),6), + 射程=500, + 类型=3 + } + table.insert(敌人子弹组,子弹) + 飞机组[n].攻击冷却=50 + 子弹音效1:播放() + else + 飞机组[n].攻击冷却=飞机组[n].攻击冷却-1 + end + end + + + + if(飞机组[n].血量<0)then + for x=1,5 do + local 临时爆炸={ + x=地图x+飞机组[n].x+引擎:取随机整数(-100,100), + y=地图y+飞机组[n].y+引擎:取随机整数(-100,100), + 类型=D2D_粒子.创建("Dat/爆炸.psi",粒子精灵), + 倒计时=50 + } + table.insert(爆炸组,临时爆炸) + end + 爆炸音效2:播放() + table.remove(飞机组,n) + break + end + end + + + + + + + + + for n=1,table.getn(地雷组) do + 地雷组[n].精灵:显示(地图x+地雷组[n].x,地图y+地雷组[n].y) + 地雷组[n].包围盒:置位置(地图x+地雷组[n].x,地图y+地雷组[n].y) + end + + --子弹 + for n=1,table.getn(主角子弹组) do + 主角子弹组[n].子弹:更新(时间) + 主角子弹组[n].射程=主角子弹组[n].射程-10 + 主角子弹组[n].子弹:显示() + if(主角子弹组[n].射程<0)then + table.remove(主角子弹组,n) + break + end + end + + for n=1,table.getn(敌人子弹组) do + 敌人子弹组[n].子弹:更新(时间) + 敌人子弹组[n].射程=敌人子弹组[n].射程-6 + 敌人子弹组[n].子弹:显示() + if(敌人子弹组[n].射程<0)then + table.remove(敌人子弹组,n) + break + end + end + + ----胜负判断---- + if(主角.主角.血量<=0)then + local 临时爆炸={ + x=地图x+主角.主角.x+引擎:取随机整数(-100,100), + y=地图y+主角.主角.y+引擎:取随机整数(-100,100), + 类型=D2D_粒子.创建("Dat/爆炸.psi",粒子精灵), + 倒计时=50 + } + table.insert(爆炸组,临时爆炸) + 爆炸音效1:播放() + 失败计时=失败计时+1 + if(失败计时>50)then + 游戏状态="输" + 失败:播放() + 失败计时=0 + end + end + + if(任务计数>=任务总数)then + + 胜利计时=胜利计时+1 + if(胜利计时>100)then + 胜利:播放() + 游戏状态="胜" + 胜利计时=0 + end + + end + + 文字_描边显示(中字,0,0,"装甲强度",颜色_红,颜色_蓝) + + 血量显示:显示(主角.主角.血量,160,0,20,40,255) + + 文字_描边显示(中字,0,560,"剩余目标",颜色_蓝,颜色_红) + + 血量显示:显示(任务总数-任务计数,160,560,20,40,255) + + end + + if(游戏状态=="清空")then + 清空(主角子弹组) + 清空(敌人子弹组) + 清空(地图物件组) + 清空(敌人组) + 清空(飞机组) + 清空(地雷组) + if(table.getn(主角子弹组)==0)and(table.getn(敌人子弹组)==0)and(table.getn(地图物件组)==0)and(table.getn(敌人组)==0)and(table.getn(地雷组)==0)then + 游戏状态="载入地图" + end + end + + + --特效 + for n=1,table.getn(爆炸组) do + 爆炸组[n].类型:启动到(爆炸组[n].x,爆炸组[n].y) + 爆炸组[n].类型:更新(时间) + 爆炸组[n].类型:显示(爆炸组[n].x,爆炸组[n].y) + 爆炸组[n].倒计时=爆炸组[n].倒计时-1 + if(爆炸组[n].倒计时<0)then + table.remove(爆炸组,n) + break + end + end + + + + 渲染结束() + return false +end + + + + + + + + + +--=============================================================================== +-- ■ 网络数据处理() +--=============================================================================== +function 网络数据处理 (命令,参数1,参数2,附加) + + +end + + + + +--=============================================================================-- +-- ■ 网络连接断开() +--=============================================================================-- +function 网络连接断开 () + + +end + + + +--=============================================================================== +-- ■ 屏幕获得焦点() +--=============================================================================== +function 屏幕获得焦点 () + + + return false +end + + + +--=============================================================================== +-- ■ 屏幕失去焦点() +--=============================================================================== +function 屏幕失去焦点 () + + + return false +end + + + +--=============================================================================== +-- ■ 屏幕关闭() +--=============================================================================== +function 屏幕关闭 () + + + + return true +end + + + +--=============================================================================== +-- ■ 渲染区保护() +--=============================================================================== +function 渲染区保护 () + + + return false +end + + + + + + + + -- Gitee From 3d1f7e7dcae4915dfe3e946cc33bb0f39fb14d03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E6=B0=B4?= <1494909107@qq.com> Date: Tue, 18 Jul 2023 13:44:15 +0000 Subject: [PATCH 12/12] =?UTF-8?q?add=20lua/Yuns4949=E7=9A=84=E5=9E=83?= =?UTF-8?q?=E5=9C=BE=E6=B8=B8=E6=88=8F=E5=8F=B2/5.=E9=93=81=E9=B9=B0.lua.?= =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0=20=E9=93=81=E9=B9=B0.lua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 云水 <1494909107@qq.com> --- .../5.\351\223\201\351\271\260.lua" | 1830 +++++++++++++++++ 1 file changed, 1830 insertions(+) create mode 100644 "lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/5.\351\223\201\351\271\260.lua" diff --git "a/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/5.\351\223\201\351\271\260.lua" "b/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/5.\351\223\201\351\271\260.lua" new file mode 100644 index 0000000..b8f9947 --- /dev/null +++ "b/lua/Yuns4949\347\232\204\345\236\203\345\234\276\346\270\270\346\210\217\345\217\262/5.\351\223\201\351\271\260.lua" @@ -0,0 +1,1830 @@ + +--=============================================================================-- +-- 演示:https://www.bilibili.com/video/BV1uW411d7jr/?spm_id_from=333.999.0.0 +-- 代码风格依旧很狂野 +--=============================================================================-- + + +--=============================================================================-- +-- ■ 加载运行库 +--=============================================================================-- +require "Lib/engine" + require "Sys/扩展_精灵文字" + +--=============================================================================== +-- ■ 初始化屏幕 +--=============================================================================== +引擎 = D2D_引擎.创建(读配置项("Dat/游戏信息.ini","游戏名称","游戏名称") .. "--****",40,800,600,true,true,"Dat/图标.ico") +----资源载入 +--引擎:置全局音量(0) + +文字2=D2D_文字.创建 ("宋体", 20,false,false, true) +文字2:置颜色(颜色_黑) + +文字3=D2D_文字.创建 ("黑体", 25,true,false, true) +文字3:置颜色(颜色_红) + +文字=D2D_文字.创建 ("黑体", 60,false,true, true) +文字:置颜色(颜色_红) +数字= D2D_精灵文字.创建() + +血条图片=引擎:载入图片("Dat/血条.png") +特效图片=引擎:载入图片("Dat/特效.png") +背景图片1=引擎:载入图片("Dat/bg.jpg") +背景图片2=引擎:载入图片("Dat/GameBackAni_00.png") +背景图片3=引擎:载入图片("Dat/2.jpg") +背景图片4=引擎:载入图片("Dat/背景图片.png") +粒子图片 = 引擎:载入图片("Dat/particles.png") +主角图片=引擎:载入图片("Dat/飞机.png") +--子弹 +大导弹图片=引擎:载入图片("Dat/大导弹.png") +主角导弹=引擎:载入图片("Dat/导弹.png") +激光图片=引擎:载入图片("Dat/激光.png") +素材杂烩=引擎:载入图片("Dat/素材杂烩.png") +--飞行的敌人 +敌人图片1=引擎:载入图片("Dat/图片1.png") +敌人图片2=引擎:载入图片("Dat/图片2.png") +敌人图片4=引擎:载入图片("Dat/敌人.png") +敌人图片5=引擎:载入图片("Dat/敌人1.png") +敌人图片3=引擎:载入图片("Dat/sprites.png") +--其他敌人 +敌人图片8=引擎:载入图片("Dat/底座.png") +敌人图片9=引擎:载入图片("Dat/炮筒.png") +--敌人boss +敌人={} +敌人[0]=引擎:载入图片("Dat/enemy0.png") +敌人[1]=引擎:载入图片("Dat/enemy1.png") +敌人[2]=引擎:载入图片("Dat/enemy2.png") +敌人[3]=引擎:载入图片("Dat/enemy3.png") +敌人[4]=引擎:载入图片("Dat/enemy4.png") +--敌人子弹 + +子弹图片2=引擎:载入图片("Dat/蛇身.png") +子弹图片1=引擎:载入图片("Dat/white-ball.png") +子弹图片3=引擎:载入图片("Dat/bullet.png") + +开启音效= D2D_音效.创建("Dat/鹰.MP3") +开启音效:播放() +变身音效= D2D_音效.创建("Dat/丝.mp3") +报警音效= D2D_音效.创建("Dat/报警.wav") +子弹音效1= D2D_音效.创建("Dat/机枪.ogg") +子弹音效2= D2D_音效.创建"Dat/m 枪.wav" +子弹音效3= D2D_音效.创建("Dat/s 枪.wav") +子弹音效4= D2D_音效.创建("Dat/火箭.mp3") +子弹音效5= D2D_音效.创建("Dat/火焰.wav") +激光音效= D2D_音效.创建("Dat/激光.mp3") +胜利音效= D2D_音效.创建("Dat/胜.mp3") +失败音效= D2D_音效.创建("Dat/WAV2.WAV") +爆炸音效= D2D_音效.创建("Dat/WAV3.WAV") +升级音效= D2D_音效.创建("Dat/奖金.wav") +背景音乐=D2D_音效.创建("Dat/FirstStepMaster.mp3") +背景音乐:播放_高级(20,true,1) + +----素材创建 +--特效 +变身特效组={} +激光特效组={} +弹幕特效组={} +爆炸特效组={} +倒计时b=100 + +--背景 +背景精灵={} +背景精灵[1]= D2D_精灵.创建(背景图片1,0,0,800,600) +背景精灵[2]= D2D_精灵.创建(背景图片2,0,0,800,600) +背景精灵[3]= D2D_精灵.创建(背景图片3,0,0,800,600) +背景精灵[4]= D2D_精灵.创建(背景图片4,0,0,800,600) + + +---------主角信息 +主角动画=D2D_动画.创建(主角图片,6,4,0,0,100,100) +主角动画:播放() +主角动画:置中心点(50,50) + +主角包围盒=D2D_包围盒.创建(0,0,60,60) + +主角={ + x=400, + y=400, + 血量=40, + 状态="", + 射速=30, + 子弹等级=2, + 子弹威力=1, + 防御=1 +} +主角子弹组={} + +主角子弹1= D2D_精灵.创建(素材杂烩,60,0,10,20) +主角子弹1:置中心点(5,5) +主角子弹2 = D2D_精灵.创建(粒子图片,96, 32, 32, 32) +主角子弹2:置中心点(16,16) + +爆炸= D2D_精灵.创建(粒子图片,96, 32, 32, 32) +爆炸:置中心点(16,16) +爆炸:置混合模式(1) + +当前子弹=主角子弹1 +当前射速=0 + +临时x=0 +临时y=0 + +------主角副武器------ + +血条前景= D2D_精灵.创建(血条图片,14,0,6,96) +血条背景= D2D_精灵.创建(血条图片,0,0,10,100) + +血量=0 +武器升级=0 + +特效=D2D_粒子.创建("Dat/特效.psi",主角子弹2) +副武器参数=0 + +血条前景1= D2D_精灵.创建(血条图片1,14,0,6,96) +血条背景1= D2D_精灵.创建(血条图片,0,0,10,100) +血条前景1:置颜色(ARGB(255,0,0,255)) +----召唤卫星 + +卫星底座2= D2D_精灵.创建(素材杂烩,70,0,28,28) +卫星底座2:置中心点(14,14) +卫星炮2= D2D_精灵.创建(素材杂烩,110,0,18,36) +卫星炮2:置中心点(9,9) +卫星底座1= D2D_精灵.创建(敌人图片8,0,0,32,32) +卫星底座1:置中心点(16,16) +卫星炮1= D2D_精灵.创建(敌人图片9,0,0,32,32) +卫星炮1:置中心点(16,16) + +卫星子弹组={} + +卫星={x=0,y=0,d=0} +卫星1={攻击倒计时=0} +卫星2={攻击倒计时=0} + +卫星倒计时=0 + +----防盾 + +防盾精灵= D2D_精灵.创建(特效图片,0,0,100,100) +防盾精灵:置中心点(50,50) +防盾倒计时=0 +防盾=0 +----激光 +激光精灵= D2D_精灵.创建(激光图片,0,0,40,100) +激光精灵:置中心点(20,0) +激光倒计时=0 + + + + + + + + + +----敌人---- +敌人组={} --x,y,类型,显示,移动类型,m,d + ----攻击类型,血量,临时 +敌人产生时间=0 +敌人产生临时2=引擎:取随机整数(30,50) +敌人产生临时=0 + +敌人子弹组={} --x,y,d,m,射程,攻击力 + + + + + +----数据初始 +背景参数2=引擎:取随机整数(1,4) +游戏状态="" +当前关卡=1 +关卡时间=0 +敌人系数=0 + +----可不初始数据 +背景参数1x=0 +背景参数1y=0 + +----不可初始数据 +P= 0.017453 + + +--=============================================================================== +-- ■ 屏幕逻辑() +--=============================================================================== +function 屏幕逻辑 () + 时间=引擎:取最后帧时间() + + 主角动画:更新(时间) + + + + ----移动命令--移植自前作---- +if(引擎:取按键事件(键_A)and(主角.x>50))then + 主角.x=主角.x-2 + 背景参数1x=背景参数1x-1 +end +if(引擎:取按键事件(键_D)and(主角.x<750))then + 主角.x=主角.x+2 + 背景参数1x=背景参数1x+1 +end +if(引擎:取按键事件(键_W)and(主角.y>50))then + 主角.y=主角.y-2 + 背景参数1y=背景参数1y-0.7 +end +if(引擎:取按键事件(键_S)and(主角.y<550))then + 主角.y=主角.y+2 + 背景参数1y=背景参数1y+0.5 +end + ---- + + + return false +end + + + + +--=============================================================================== +-- ■ 屏幕渲染() +--=============================================================================== +function 屏幕渲染 () + 渲染开始() + 清屏(ARGB(255,128,128,128)) + --背景-- + 背景精灵[背景参数2]:显示() + 背景精灵[背景参数2]:置显示区域(背景参数1x,背景参数1y,800,600) + 背景参数1y=背景参数1y-1 + + -- + if(游戏状态=="")then + for n=1,table.getn(变身特效组) do + table.remove(变身特效组,n) + break + end + for n=1,table.getn(激光特效组) do + table.remove(激光特效组,n) + break + end + for n=1,table.getn(弹幕特效组) do + table.remove(弹幕特效组,n) + break + end + for n=1,table.getn(爆炸特效组) do + table.remove(爆炸特效组,n) + break + end + for n=1,table.getn(主角子弹组) do + table.remove(主角子弹组,n) + break + end + for n=1,table.getn(卫星子弹组) do + table.remove(卫星子弹组,n) + break + end + for n=1,table.getn(敌人组) do + table.remove(敌人组,n) + break + end + for n=1,table.getn(敌人子弹组) do + table.remove(敌人子弹组,n) + break + end + 文字2:显示(210,340,"W上S下A左D右,空格技能,按回车开始!") + 文字:显示(210,270,"当前关卡:") + 数字:显示(当前关卡,480,270,60,65,255,false) + if(引擎:取按键按下(键_回车))then + + --初始 + 关卡时间=0 + 敌人系数=0 + 敌人产生时间=0 + 敌人产生临时2=引擎:取随机整数(30,50) + 敌人产生临时=0 + 背景参数2=引擎:取随机整数(1,4) + 最后敌人=0 + if(主角.血量>30)then + 主角.血量=40 + else + 主角.血量=主角.血量+10 + end + 主角.x=400 + 主角.y=400 + 倒计时b=100 + for n=1,table.getn(变身特效组) do + table.remove(变身特效组,n) + break + end + for n=1,table.getn(激光特效组) do + table.remove(激光特效组,n) + break + end + for n=1,table.getn(弹幕特效组) do + table.remove(弹幕特效组,n) + break + end + for n=1,table.getn(爆炸特效组) do + table.remove(爆炸特效组,n) + break + end + for n=1,table.getn(主角子弹组) do + table.remove(主角子弹组,n) + break + end + for n=1,table.getn(卫星子弹组) do + table.remove(卫星子弹组,n) + break + end + for n=1,table.getn(敌人组) do + table.remove(敌人组,n) + break + end + for n=1,table.getn(敌人子弹组) do + table.remove(敌人子弹组,n) + break + end + + if(table.getn(敌人子弹组)==0)and(table.getn(敌人组)==0)and(table.getn(主角子弹组)==0)and(table.getn(卫星子弹组)==0)and(table.getn(爆炸特效组)==0)and(table.getn(激光特效组)==0)and(table.getn(变身特效组)==0)and(table.getn(弹幕特效组)==0)then + 游戏状态="战斗" + end + + end + end + + + if(游戏状态=="胜利")then + for n=1,table.getn(变身特效组) do + table.remove(变身特效组,n) + break + end + for n=1,table.getn(激光特效组) do + table.remove(激光特效组,n) + break + end + for n=1,table.getn(弹幕特效组) do + table.remove(弹幕特效组,n) + break + end + for n=1,table.getn(爆炸特效组) do + table.remove(爆炸特效组,n) + break + end + for n=1,table.getn(主角子弹组) do + table.remove(主角子弹组,n) + break + end + for n=1,table.getn(卫星子弹组) do + table.remove(卫星子弹组,n) + break + end + for n=1,table.getn(敌人组) do + table.remove(敌人组,n) + break + end + for n=1,table.getn(敌人子弹组) do + table.remove(敌人子弹组,n) + break + end + 文字:显示(120,270,"!恭喜通关!按空格继续!") + if(引擎:取按键按下(键_空格))then + --初始 + 当前关卡=1 + 关卡时间=0 + 敌人系数=0 + 敌人产生时间=0 + 敌人产生临时2=引擎:取随机整数(30,50) + 敌人产生临时=0 + 背景参数2=引擎:取随机整数(1,4) + 最后敌人=0 + if(主角.血量>30)then + 主角.血量=40 + else + 主角.血量=主角.血量+10 + end + 主角.x=400 + 主角.y=400 + 倒计时b=100 + for n=1,table.getn(变身特效组) do + table.remove(变身特效组,n) + break + end + for n=1,table.getn(激光特效组) do + table.remove(激光特效组,n) + break + end + for n=1,table.getn(弹幕特效组) do + table.remove(弹幕特效组,n) + break + end + for n=1,table.getn(爆炸特效组) do + table.remove(爆炸特效组,n) + break + end + for n=1,table.getn(主角子弹组) do + table.remove(主角子弹组,n) + break + end + for n=1,table.getn(卫星子弹组) do + table.remove(卫星子弹组,n) + break + end + for n=1,table.getn(敌人组) do + table.remove(敌人组,n) + break + end + for n=1,table.getn(敌人子弹组) do + table.remove(敌人子弹组,n) + break + end + + if(table.getn(敌人子弹组)==0)and(table.getn(敌人组)==0)and(table.getn(主角子弹组)==0)and(table.getn(卫星子弹组)==0)and(table.getn(爆炸特效组)==0)and(table.getn(激光特效组)==0)and(table.getn(变身特效组)==0)and(table.getn(弹幕特效组)==0)then + 游戏状态="战斗" + end + + end + end + -- + + +if(游戏状态=="战斗")then + ----战斗代码 + 关卡时间=关卡时间+1 + + ----死亡重开 + if(主角.血量<=0)then + 失败音效:播放() + 当前关卡=1 + 游戏状态="" + end + + + 主角动画:显示(主角.x,主角.y) + 主角包围盒:置位置(主角.x-30,主角.y-30) + + 血条背景:显示_高级(0,600,270*P,2,2) + 血条前景:显示_高级(4,595,270*P,2,主角.血量*2/40) + + + ----主角射击系统---- + if(当前射速>0)then + 当前射速=当前射速-1 + else + if(主角.子弹威力>4)then + if(主角.子弹等级%2==1)then + local 子弹={ + x=主角.x, + y=主角.y-80, + 类型2=D2D_粒子.创建("Dat/烟2.psi",主角子弹2), + 类型= D2D_动画.创建(大导弹图片,4,4,20,0,15,40), + 威力=主角.子弹威力 + } + 子弹.类型:播放() + table.insert(主角子弹组,子弹) + for n=1,取整(主角.子弹等级/2) do + local 子弹={ + x=主角.x+n*20, + y=主角.y-80+5*n, + 类型2=D2D_粒子.创建("Dat/烟2.psi",主角子弹2), + 类型= D2D_动画.创建(大导弹图片,4,4,20,0,15,40), + 威力=主角.子弹威力 + } + 子弹.类型:播放() + table.insert(主角子弹组,子弹) + local 子弹={ + x=主角.x-n*20, + y=主角.y-80+5*n, + 类型2=D2D_粒子.创建("Dat/烟2.psi",主角子弹2), + 类型= D2D_动画.创建(大导弹图片,4,4,20,0,15,40), + 威力=主角.子弹威力 + } + 子弹.类型:播放() + table.insert(主角子弹组,子弹) + end + else + for n=1,取整(主角.子弹等级/2) do + local 子弹={ + x=主角.x-10+n*20, + y=主角.y-80+5*n, + 类型2=D2D_粒子.创建("Dat/烟2.psi",主角子弹2), + 类型= D2D_动画.创建(大导弹图片,4,4,20,0,15,40), + 威力=主角.子弹威力 + } + 子弹.类型:播放() + table.insert(主角子弹组,子弹) + local 子弹={ + x=主角.x+10-n*20, + y=主角.y-80+5*n, + 类型2=D2D_粒子.创建("Dat/烟2.psi",主角子弹2), + 类型= D2D_动画.创建(大导弹图片,4,4,20,0,15,40), + 威力=主角.子弹威力 + } + 子弹.类型:播放() + table.insert(主角子弹组,子弹) + end + end + 子弹音效5:播放_高级(40,false,2) + elseif(主角.子弹威力>3)then + if(主角.子弹等级%2==1)then + local 子弹={ + x=主角.x, + y=主角.y-80, + 类型2=D2D_粒子.创建("Dat/烟.psi",主角子弹2), + 类型= D2D_精灵.创建(大导弹图片,0,0,15,40), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + for n=1,取整(主角.子弹等级/2) do + local 子弹={ + x=主角.x+n*20, + y=主角.y-80+5*n, + 类型2=D2D_粒子.创建("Dat/烟.psi",主角子弹2), + 类型= D2D_精灵.创建(大导弹图片,0,0,15,40), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + local 子弹={ + x=主角.x-n*20, + y=主角.y-80+5*n, + 类型2=D2D_粒子.创建("Dat/烟.psi",主角子弹2), + 类型= D2D_精灵.创建(大导弹图片,0,0,15,40), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + end + else + for n=1,取整(主角.子弹等级/2) do + local 子弹={ + x=主角.x-10+n*20, + y=主角.y-80+5*n, + 类型2=D2D_粒子.创建("Dat/烟.psi",主角子弹2), + 类型= D2D_精灵.创建(大导弹图片,0,0,15,40), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + local 子弹={ + x=主角.x+10-n*20, + y=主角.y-80+5*n, + 类型2=D2D_粒子.创建("Dat/烟.psi",主角子弹2), + 类型= D2D_精灵.创建(大导弹图片,0,0,15,40), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + end + end + 子弹音效4:播放_高级(40,false,3) + elseif(主角.子弹威力>2)then + if(主角.子弹等级%2==1)then + local 子弹={ + x=主角.x, + y=主角.y-80, + 类型=D2D_粒子.创建("Dat/小火球.psi",主角子弹2), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + for n=1,取整(主角.子弹等级/2) do + local 子弹={ + x=主角.x+n*20, + y=主角.y-80+5*n, + 类型=D2D_粒子.创建("Dat/小火球.psi",主角子弹2), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + local 子弹={ + x=主角.x-n*20, + y=主角.y-80+5*n, + 类型=D2D_粒子.创建("Dat/小火球.psi",主角子弹2), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + end + else + for n=1,取整(主角.子弹等级/2) do + local 子弹={x=主角.x-10+n*20, + y=主角.y-80+5*n, + 类型=D2D_粒子.创建("Dat/小火球.psi",主角子弹2), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + local 子弹={ + x=主角.x+10-n*20, + y=主角.y-80+5*n, + 类型= D2D_粒子.创建("Dat/小火球.psi",主角子弹2), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + end + end + 子弹音效3:播放_高级(40,false,1.5) + elseif(主角.子弹威力>1)then + if(主角.子弹等级%2==1)then + local 子弹={ + x=主角.x, + y=主角.y-80, + 类型=D2D_动画.创建(主角导弹,4,4,0,0,15,40), + 威力=主角.子弹威力 + } + 子弹.类型:播放() + table.insert(主角子弹组,子弹) + for n=1,取整(主角.子弹等级/2) do + local 子弹={ + x=主角.x+n*20, + y=主角.y-80+5*n, + 类型=D2D_动画.创建(主角导弹,4,4,0,0,15,40), + 威力=主角.子弹威力 + } + 子弹.类型:播放() + table.insert(主角子弹组,子弹) + local 子弹={ + x=主角.x-n*20, + y=主角.y-80+5*n, + 类型=D2D_动画.创建(主角导弹,4,4,0,0,15,40), + 威力=主角.子弹威力 + } + 子弹.类型:播放() + table.insert(主角子弹组,子弹) + end + else + for n=1,取整(主角.子弹等级/2) do + local 子弹={ + x=主角.x-10+n*20, + y=主角.y-80+5*n, + 类型=D2D_动画.创建(主角导弹,4,4,0,0,15,40), + 威力=主角.子弹威力 + } + 子弹.类型:播放() + table.insert(主角子弹组,子弹) + local 子弹={ + x=主角.x+10-n*20, + y=主角.y-80+5*n, + 类型=D2D_动画.创建(主角导弹,4,4,0,0,15,40), + 威力=主角.子弹威力 + } + 子弹.类型:播放() + table.insert(主角子弹组,子弹) + end + end + 子弹音效2:播放_高级(40,false,1.5) + else + if(主角.子弹等级%2==1)then + local 子弹={ + x=主角.x, + y=主角.y-80, + 类型= D2D_精灵.创建(素材杂烩,0,0,14,40), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + for n=1,取整(主角.子弹等级/2) do + local 子弹={ + x=主角.x+n*20, + y=主角.y-80+5*n, + 类型= D2D_精灵.创建(素材杂烩,0,0,14,40), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + local 子弹={ + x=主角.x-n*20, + y=主角.y-80+5*n, + 类型= D2D_精灵.创建(素材杂烩,0,0,14,40), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + end + else + for n=1,取整(主角.子弹等级/2) do + local 子弹={ + x=主角.x-10+n*20, + y=主角.y-80+5*n, + 类型= D2D_精灵.创建(素材杂烩,0,0,14,40), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + local 子弹={ + x=主角.x+10-n*20, + y=主角.y-80+5*n, + 类型= D2D_精灵.创建(素材杂烩,0,0,14,40), + 威力=主角.子弹威力 + } + table.insert(主角子弹组,子弹) + end + end + 子弹音效1:播放_高级(40,false,1.5) + end + + 当前射速=主角.射速 + end + ----主角子弹显示---- + for n=1,table.getn(主角子弹组) do + if(主角子弹组[n].威力>4)then + 主角子弹组[n].类型:更新(时间) + 主角子弹组[n].类型2:启动到(主角子弹组[n].x,主角子弹组[n].y) + 主角子弹组[n].类型2:更新(时间) + 主角子弹组[n].类型2:显示(主角子弹组[n].x,主角子弹组[n].y) + 主角子弹组[n].类型:显示(主角子弹组[n].x-7,主角子弹组[n].y) + elseif(主角子弹组[n].威力>3)then + 主角子弹组[n].类型2:启动到(主角子弹组[n].x,主角子弹组[n].y+40) + 主角子弹组[n].类型2:更新(时间) + 主角子弹组[n].类型2:显示(主角子弹组[n].x,主角子弹组[n].y+40) + 主角子弹组[n].类型:显示(主角子弹组[n].x-7,主角子弹组[n].y) + elseif(主角子弹组[n].威力>2)then + 主角子弹组[n].类型:启动到(主角子弹组[n].x,主角子弹组[n].y) + 主角子弹组[n].类型:更新(时间) + 主角子弹组[n].类型:显示(主角子弹组[n].x-7,主角子弹组[n].y) + elseif(主角子弹组[n].威力>1)then + 主角子弹组[n].类型:更新(时间) + 主角子弹组[n].类型:显示(主角子弹组[n].x-7,主角子弹组[n].y) + else + 主角子弹组[n].类型:显示_高级(主角子弹组[n].x-4,主角子弹组[n].y,0,0.7,0.7) + end + + 主角子弹组[n].y=主角子弹组[n].y-3 + + + ----命中判断--在敌人组中-- + + ---- + + if(主角子弹组[n].y<0)then + table.remove(主角子弹组,n) + break + end + end + + --主角副武器-- + 血条背景1:显示_高级(600,600,270*P,2,2) + 血条前景1:显示_高级(604,595,270*P,2,血量*2/100) + if(血量<100)then + 血量=血量+0.02 + else + if(主角.子弹威力*主角.子弹等级<25)then + 文字3:显示(350,280,"!武器正在升级!") + 武器升级=武器升级+0.5 + if(武器升级>100)then + if(主角.子弹等级>4)then + 主角.子弹威力=主角.子弹威力+1 + 主角.子弹等级=2 + else + 主角.子弹等级=主角.子弹等级+1 + end + 主角.防御=主角.防御+0.1 + 副武器参数=25 + 血量=0 + 武器升级=0 + 升级音效:播放() + end + end + end + --副武器判断-- + if(引擎:取按键按下(键_空格))then + if(血量>75)then + 卫星倒计时=500 + 血量=0 + 副武器参数=25 + 升级音效:播放_高级(40,false,2) + elseif(血量>50)then + 激光音效:播放_高级(100,false,1) + 激光倒计时=200 + 血量=0 + 副武器参数=25 + 升级音效:播放_高级(40,false,2) + elseif(血量>25)then + 防盾倒计时=250 + 血量=0 + 副武器参数=25 + 升级音效:播放_高级(40,false,2) + end + end + if(血量>75)and(血量<76)then + 文字3:显示(350,280,"!双子卫星就绪!") + elseif(血量>50)and(血量<51)then + 文字3:显示(350,280,"!激光火焰就绪!") + elseif(血量>25)and(血量<26)then + 文字3:显示(350,280,"!粒子护盾就绪!") + end + if(副武器参数>0)then + 特效:启动到(主角.x,主角.y) + 特效:更新(时间) + 特效:显示(主角.x,主角.y) + 副武器参数=副武器参数-1 + end + --副武器显示-- + --防盾 + if(防盾倒计时>0)then + 防盾=1 + 防盾倒计时=防盾倒计时-1 + 防盾精灵:显示_高级(主角.x,主角.y,引擎:取随机小数(0,3.14),1,1) + 防盾精灵:置颜色(ARGB(引擎:取随机整数(100,200),引擎:取随机整数(1,255),引擎:取随机整数(1,255),引擎:取随机整数(1,255))) + else + 防盾=0 + end + + + --激光 + if(激光倒计时>0)then + 激光倒计时=激光倒计时-1 + 激光精灵:显示_高级(主角.x,0,0,引擎:取随机小数(0,1),6) + --命中 + for r=1,table.getn(敌人组) do + if(敌人组[r].x+50>主角.x)and(敌人组[r].x-50<主角.x)then + 敌人组[r].血量=敌人组[r].血量-0.05 + end + end + end + if(激光倒计时%40==1)then + for r=1,table.getn(敌人组) do + if(敌人组[r].x+50>主角.x)and(敌人组[r].x-50<主角.x)then + local 临时爆炸={ + x=敌人组[r].x+引擎:取随机整数(-10,10), + y=敌人组[r].y+引擎:取随机整数(-10,10), + 类型=D2D_粒子.创建("Dat/爆炸.psi",爆炸), + 倒计时=25 + } + table.insert(爆炸特效组,临时爆炸) + 敌人组[r].血量=敌人组[r].血量-0.05 + end + end + end + + + --卫星 + if(卫星倒计时>0)then + 卫星倒计时=卫星倒计时-1 + 卫星.d=卫星.d+2 + 卫星.x,卫星.y=取移动步幅(卫星.d) + 卫星底座1:显示_高级(主角.x+卫星.x*100,主角.y+卫星.y*100,卫星.d*P,1,1) + 卫星底座2:显示_高级(主角.x-卫星.x*100,主角.y-卫星.y*100,0,1,1) + 卫星炮1:显示_高级(主角.x+卫星.x*100,主角.y+卫星.y*100,卫星1.d,1,1) + 卫星炮2:显示_高级(主角.x-卫星.x*100,主角.y-卫星.y*100,(卫星.d+90)*P,1,1) + if(卫星1.攻击倒计时>0)then + 卫星1.攻击倒计时=卫星1.攻击倒计时-1 + else + local 子弹={ + x2=0, + y2=0, + x=主角.x+卫星.x*100-10, + y=主角.y+卫星.y*100-13, + 射速=6, + d=-90, + 类型= D2D_精灵.创建(子弹图片3,0,0,24,24), + 威力=1, + 射程=600 + } + 子弹.类型:置中心点(12,12) + 子弹.类型:置颜色(ARGB(255,引擎:取随机整数(1,255),引擎:取随机整数(1,255),引擎:取随机整数(1,255))) + table.insert(卫星子弹组,子弹) + 子弹音效1:播放() + local 子弹={ + x2=0, + y2=0, + x=主角.x+卫星.x*100+10, + y=主角.y+卫星.y*100-13, + 射速=6, + d=-90, + 类型= D2D_精灵.创建(子弹图片3,0,0,24,24), + 威力=3, + 射程=600 + } + 子弹.类型:置中心点(12,12) + 子弹.类型:置颜色(ARGB(255,引擎:取随机整数(1,255),引擎:取随机整数(1,255),引擎:取随机整数(1,255))) + table.insert(卫星子弹组,子弹) + 卫星1.攻击倒计时=5 + end + if(卫星2.攻击倒计时>0)then + 卫星2.攻击倒计时=卫星2.攻击倒计时-1 + else + local 子弹={ + x2=0, + y2=0, + x=主角.x-卫星.x*130, + y=主角.y-卫星.y*130, + 射速=6, + d=卫星.d+220, + 类型= D2D_精灵.创建(子弹图片1,0,0,16,16), + 威力=4, + 射程=600 + } + --子弹.类型:置中心点(8,8) + 子弹.类型:置颜色(ARGB(255,引擎:取随机整数(1,255),引擎:取随机整数(1,255),引擎:取随机整数(1,255))) + table.insert(卫星子弹组,子弹) + 子弹音效1:播放() + 卫星2.攻击倒计时=10 + end + + end + + for n=1,table.getn(卫星子弹组) do + 卫星子弹组[n].类型:显示_高级(卫星子弹组[n].x,卫星子弹组[n].y,(卫星子弹组[n].d-90)*P,1,1) + 卫星子弹组[n].x2,卫星子弹组[n].y2=取移动步幅(卫星子弹组[n].d) + if(卫星子弹组[n].射程>0)then + 卫星子弹组[n].x=卫星子弹组[n].x+卫星子弹组[n].射速*卫星子弹组[n].x2 + 卫星子弹组[n].y=卫星子弹组[n].y+卫星子弹组[n].射速*卫星子弹组[n].y2 + 卫星子弹组[n].射程=卫星子弹组[n].射程-卫星子弹组[n].射速 + else + table.remove(卫星子弹组,n) + break + end + end + + if(主角.血量<10)and(倒计时b<0)then + local 临时爆炸={ + x=主角.x+引擎:取随机整数(-10,10), + y=主角.y+引擎:取随机整数(-10,10), + 类型=D2D_粒子.创建("Dat/爆炸.psi",爆炸), + 倒计时=25 + } + table.insert(爆炸特效组,临时爆炸) + 倒计时b=40 + else + 倒计时b=倒计时b-1 + end + + + ----普通敌人---- + if(关卡时间>(敌人产生时间+敌人产生临时2))and(最后敌人==0)then + --产生敌人--要改-- + 敌人产生临时=tonumber(读配置项("Dat/配置.ini",tostring(当前关卡),tostring(敌人系数))) + 敌人系数=敌人系数+1 + + ---关卡判断---- + if(敌人产生临时==0)then + 报警音效:播放() + end + if(敌人产生临时==-1)then + 最后敌人=1 + end + ---- + + if(敌人产生临时==1)then + local 敌人={ + x=引擎:取随机整数(100,700), + y=-200, + d=0, + m=1, + 移动x=0, + 移动y=0, + 攻击类型="发子弹1", + 移动类型="直线飞行", + 血量=6*当前关卡, + 显示= D2D_精灵.创建(敌人图片2,0,0,100,100), + 临时=引擎:取随机整数(300,400), + 状态=0, + 类型=1 + } + 敌人.显示:置中心点(50,50) + table.insert(敌人组,敌人) + end + if(敌人产生临时==2)then + local 敌人={ + y=引擎:取随机整数(100,300), + x=引擎:取随机整数(50,750), + d=0, + m=0.7, + 移动x=0, + 移动y=0, + 攻击类型="发子弹2", + 移动类型="静止", + 血量=25*当前关卡, + 显示= D2D_精灵.创建(敌人图片1,0,0,200,200), + 临时=0, + 状态=0, + 类型=2 + } + 敌人.显示:置中心点(100,100) + table.insert(敌人组,敌人) + end + if(敌人产生临时==3)then + local 敌人={ + x=引擎:取随机整数(100,700), + y=-200, + d=180*P, + m=1, + 移动x=0, + 移动y=0, + 攻击类型="变身", --转为冲撞 + 移动类型="直线飞行", + 血量=6*当前关卡, + 显示=D2D_动画.创建(敌人图片5,2,2,500,0,100,100), + 临时=引擎:取随机整数(300,400), + 状态=0, + 类型=3 + } + 敌人.显示:置中心点(50,50) + table.insert(敌人组,敌人) + end + if(敌人产生临时==4)then + local 敌人={ + x=引擎:取随机整数(100,700), + y=-200, + d=180*P, + m=1, + 移动x=0, + 移动y=0, + 攻击类型="变身", --变身后转为发子弹2 + 移动类型="直线飞行", + 血量=35*当前关卡, + 显示=D2D_动画.创建(敌人图片5,2,2,0,0,100,100), + 临时=引擎:取随机整数(300,400), + 状态=0, + 类型=4 + } + 敌人.显示:置中心点(50,50) + table.insert(敌人组,敌人) + end + if(敌人产生临时==5)then + local 敌人={ + x=引擎:取随机整数(100,700), + y=-200, + d=180*P, + m=1, + 移动x=0, + 移动y=0, + 攻击类型="变身",--变身后转为激光 + 移动类型="直线飞行", + 血量=30*当前关卡, + 显示=D2D_动画.创建(敌人图片5,2,2,200,0,100,100), + 临时=引擎:取随机整数(300,400), + 状态=0, + 类型=5 + } + 敌人.显示:置中心点(50,50) + table.insert(敌人组,敌人) + end + if(敌人产生临时==6)then + local 敌人={ + x=引擎:取随机整数(50,750), + y=引擎:取随机整数(100,300), + d=180*P, + m=1, + 移动x=0, + 移动y=0, + 攻击类型="发子弹2", + 移动类型="静止", + 血量=40*当前关卡, + 显示=D2D_动画.创建(敌人图片4,4,4,0,0,100,100), + 临时=0, + 状态=0, + 类型=6 + } + 敌人.显示:置中心点(50,50) + 敌人.显示:播放() + table.insert(敌人组,敌人) + end + if(敌人产生临时==7)then + local 敌人={ + x=引擎:取随机整数(50,750), + y=-200, + d=90*P, + m=100/64, + 移动x=0, + 移动y=0, + 攻击类型="发子弹3", + 移动类型="直线飞行", + 血量=10*当前关卡, + 显示= D2D_动画.创建(敌人图片3,3,3,0,0,64,64), + 临时=引擎:取随机整数(300,400), + 状态=0, + 类型=7 + } + 敌人.显示:置中心点(32,32) + 敌人.显示:播放() + table.insert(敌人组,敌人) + end + if(敌人产生临时>7)then + local 敌人={ + x=-50, + y=-50, + d=0, + m=2, + 移动x=0, + 移动y=0, + 攻击类型="弹幕", + 移动类型="boss型", + 血量=200*(敌人产生临时-7), + 显示= D2D_动画.创建(敌人[敌人产生临时-8],6,6,0,0,64,64), + 临时=500, + 状态=引擎:取随机整数(-180,0), + 类型=敌人产生临时 + } + 敌人.显示:置中心点(32,32) + 敌人.显示:播放() + table.insert(敌人组,敌人) + end + + + 敌人产生时间=关卡时间 + 敌人产生临时2=50*tonumber(读配置项("Dat/配置2.ini",tostring(当前关卡),tostring(敌人系数-1))) + end + + ----敌人显示 + for n=1,table.getn(敌人组) do + + --特殊状态 + if(敌人组[n].类型>=6)then + 敌人组[n].显示:更新(时间) + end + --移动 + if(敌人组[n].移动类型=="直线飞行")and(敌人组[n].临时>=0)then + 敌人组[n].y=敌人组[n].y+1 + 敌人组[n].临时=敌人组[n].临时-1 + if(敌人组[n].y>650)then + table.remove(敌人组,n) + break + end + end + if(敌人组[n].移动类型=="静止")then + if(敌人组[n].x<300)then + 敌人组[n].临时=敌人组[n].x+100 + 敌人组[n].移动类型="飞入" + 敌人组[n].x=-100 + end + if(敌人组[n].x>500)then + 敌人组[n].临时=900-敌人组[n].x + 敌人组[n].移动类型="飞入" + 敌人组[n].x=900 + end + if(敌人组[n].x>=300)and(敌人组[n].x<=500)then + 敌人组[n].临时=敌人组[n].y+100 + 敌人组[n].移动类型="飞入" + 敌人组[n].y=-100 + end + end + if(敌人组[n].移动类型=="飞入")and(敌人组[n].临时>=0)then + if(敌人组[n].x<300)then + 敌人组[n].x=敌人组[n].x+1 + 敌人组[n].临时=敌人组[n].临时-1 + end + if(敌人组[n].x>500)then + 敌人组[n].x=敌人组[n].x-1 + 敌人组[n].临时=敌人组[n].临时-1 + end + if(敌人组[n].x>=300)and(敌人组[n].x<=500)then + 敌人组[n].y=敌人组[n].y+1 + 敌人组[n].临时=敌人组[n].临时-1 + end + end + if(敌人组[n].移动类型=="追击移动")and(敌人组[n].临时>=0)then + 敌人组[n].移动x,敌人组[n].移动y=取移动步幅(敌人组[n].d/P-90) + 敌人组[n].x=敌人组[n].x+敌人组[n].移动x*1.7 + 敌人组[n].y=敌人组[n].y+敌人组[n].移动y*1.7 + 敌人组[n].临时=敌人组[n].临时-1 + if(敌人组[n].临时==0)then + 敌人组[n].d=(取两点间角度(敌人组[n].x,敌人组[n].y,主角.x,主角.y)+90)*P + end + end + if(敌人组[n].移动类型=="左右飞行")and(敌人组[n].临时>=0)then + if(敌人组[n].状态==1)then + 敌人组[n].x=敌人组[n].x-2 + 敌人组[n].临时=敌人组[n].临时-2 + end + if(敌人组[n].状态==0)then + 敌人组[n].x=敌人组[n].x+2 + 敌人组[n].临时=敌人组[n].临时-2 + end + end + if(敌人组[n].移动类型=="boss型")and(敌人组[n].临时>=0)then + 敌人组[n].移动x,敌人组[n].移动y=取移动步幅(敌人组[n].状态) + 敌人组[n].x=400+敌人组[n].移动x*敌人组[n].临时 + 敌人组[n].y=100+敌人组[n].移动y*敌人组[n].临时 + 敌人组[n].临时=敌人组[n].临时-1 + if(敌人组[n].临时==0)then + 敌人组[n].状态=0 + end + end + + + + --攻击 + if(敌人组[n].临时<0)then + --变身 + if(敌人组[n].攻击类型=="变身")then + if(敌人组[n].移动类型=="")then + 敌人组[n].状态=敌人组[n].状态-1 + if(敌人组[n].状态<0)then + 敌人组[n].显示:置当前帧(1) + 敌人组[n].d=(取两点间角度(敌人组[n].x,敌人组[n].y,主角.x,主角.y)+90)*P + if(敌人组[n].类型==3)then + 敌人组[n].攻击类型="冲撞" + 敌人组[n].状态=200 + end + if(敌人组[n].类型==4)then + 敌人组[n].攻击类型="发子弹2" + end + if(敌人组[n].类型==5)then + 敌人组[n].攻击类型="激光发射" + end + end + else + 变身音效:播放_高级(50,false,1) + local 临时特效={x=敌人组[n].x,y=敌人组[n].y,d=0,m=0,精灵=D2D_精灵.创建(特效图片,0,0,100,100)} + 临时特效.精灵:置中心点(50,50) + table.insert(变身特效组,临时特效) + 敌人组[n].移动类型="" + 敌人组[n].状态=20 + end + end + --冲撞 + if(敌人组[n].攻击类型=="冲撞")then + 敌人组[n].移动x,敌人组[n].移动y=取移动步幅(敌人组[n].d/P-90) + 敌人组[n].x=敌人组[n].x+敌人组[n].移动x*4 + 敌人组[n].y=敌人组[n].y+敌人组[n].移动y*4 + 敌人组[n].状态=敌人组[n].状态-1 + if(敌人组[n].状态<0)then + table.remove(敌人组,n) + break + end + end + if(敌人组[n].攻击类型=="激光发射")then + 敌人组[n].d=(取两点间角度(敌人组[n].x,敌人组[n].y,主角.x,主角.y)+90)*P + 敌人组[n].状态=120 + local 临时特效={x=敌人组[n].x,y=敌人组[n].y,d=0,d2=敌人组[n].d,m=120,精灵=D2D_精灵.创建(特效图片,0,0,100,100),炮弹=D2D_精灵.创建(激光图片,0,0,40,100)} + 临时特效.精灵:置中心点(50,50) + 临时特效.炮弹:置中心点(20,100) + table.insert(激光特效组,临时特效) + 敌人组[n].攻击类型="激光" + end + if(敌人组[n].攻击类型=="激光")then + 敌人组[n].移动x,敌人组[n].移动y=取移动步幅(敌人组[n].d/P-90) + 敌人组[n].状态=敌人组[n].状态-1 + if(敌人组[n].状态<0)then + 敌人组[n].临时=200 + 敌人组[n].移动类型="追击移动" + 敌人组[n].攻击类型="激光发射" + end + end + if(敌人组[n].攻击类型=="发子弹1")then + local 临时子弹={ + x2=0, + y2=0, + x=敌人组[n].x, + y=敌人组[n].y, + d=取两点间角度(敌人组[n].x,敌人组[n].y,主角.x,主角.y), + 类型=D2D_精灵.创建(子弹图片1,0,0,16,16), + 攻击力=1, + 射程=400 + } + 临时子弹.类型:置中心点(16,16) + table.insert(敌人子弹组,临时子弹) + 敌人组[n].临时=引擎:取随机整数(100,200) + 子弹音效1:播放() + end + if(敌人组[n].攻击类型=="发子弹2")then + if(敌人组[n].状态<0)then + 敌人组[n].状态=引擎:取随机整数(12,18) + 敌人组[n].攻击类型="就绪发子弹2" + else + 敌人组[n].状态=敌人组[n].状态-0.05 + end + end + if(敌人组[n].攻击类型=="就绪发子弹2")then + for m=1,敌人组[n].状态 do + local 临时子弹={ + x2=0, + y2=0, + x=敌人组[n].x, + y=敌人组[n].y, + d=360*m/敌人组[n].状态, + 类型=D2D_精灵.创建(子弹图片2,0,0,16,16), + 攻击力=2, + 射程=600+引擎:取随机整数(-50,50) + } + 临时子弹.类型:置中心点(16,16) + table.insert(敌人子弹组,临时子弹) + end + 敌人组[n].移动类型="" + 敌人组[n].攻击类型="发子弹2" + 子弹音效3:播放() + end + if(敌人组[n].攻击类型=="发子弹3")then + 敌人组[n].状态=引擎:取随机整数(8,12) + 敌人组[n].攻击类型="就绪发子弹3" + end + if(敌人组[n].攻击类型=="就绪发子弹3")then + for m=1,敌人组[n].状态 do + local 临时子弹={ + x2=0, + y2=0, + x=敌人组[n].x, + y=敌人组[n].y, + d=180*m/敌人组[n].状态, + 类型=D2D_精灵.创建(子弹图片1,0,0,16,16), + 攻击力=2, + 射程=600+引擎:取随机整数(-50,50) + } + 临时子弹.类型:置颜色(ARGB(255,255,50,0)) + 临时子弹.类型:置中心点(16,16) + table.insert(敌人子弹组,临时子弹) + 子弹音效3:播放() + end + if(敌人组[n].x<=400)then + 敌人组[n].状态=0 + else + 敌人组[n].状态=1 + end + 敌人组[n].移动类型="左右飞行" + 敌人组[n].攻击类型="发子弹3" + 敌人组[n].临时=引擎:取随机整数(100,200) + end + if(敌人组[n].攻击类型=="弹幕")and(table.getn(弹幕特效组)==0)then + if(敌人组[n].状态<0)then + local 临时弹幕={ + x2=0, + y2=0, + x=敌人组[n].x, + y=敌人组[n].y, + d=取两点间角度(敌人组[n].x,敌人组[n].y,主角.x,主角.y)+引擎:取随机小数(-0.2,0.2), + 类型=D2D_精灵.创建(特效图片,0,0,100,100), + 射程=引擎:取随机整数(200,300), + 临时=0, + 等级=敌人组[n].类型-7 + } + 临时弹幕.类型:置中心点(50,50) + table.insert(弹幕特效组,临时弹幕) + 敌人组[n].状态=引擎:取随机整数(100,200) + else + 敌人组[n].状态=敌人组[n].状态-0.5 + end + end + + + + + + + + + + + + + + + + + + + end + + --击中判断 + for r=1,table.getn(主角子弹组) do + if(((敌人组[n].x-主角子弹组[r].x)*(敌人组[n].x-主角子弹组[r].x)+(敌人组[n].y-主角子弹组[r].y)*(敌人组[n].y-主角子弹组[r].y))<2500)then + local 临时爆炸={ + x=敌人组[n].x+引擎:取随机整数(-10,10), + y=敌人组[n].y+引擎:取随机整数(-10,10), + 类型=D2D_粒子.创建("Dat/爆炸.psi",爆炸), + 倒计时=25 + } + table.insert(爆炸特效组,临时爆炸) + 敌人组[n].血量=敌人组[n].血量-主角子弹组[r].威力 + table.remove(主角子弹组,r) + break + end + + end + for r2=1,table.getn(卫星子弹组) do + if(((敌人组[n].x-卫星子弹组[r2].x)*(敌人组[n].x-卫星子弹组[r2].x)+(敌人组[n].y-卫星子弹组[r2].y)*(敌人组[n].y-卫星子弹组[r2].y))<2500)then + local 临时爆炸={ + x=敌人组[n].x+引擎:取随机整数(-10,10), + y=敌人组[n].y+引擎:取随机整数(-10,10), + 类型=D2D_粒子.创建("Dat/爆炸.psi",爆炸), + 倒计时=25 + } + table.insert(爆炸特效组,临时爆炸) + 敌人组[n].血量=敌人组[n].血量-卫星子弹组[r2].威力 + table.remove(卫星子弹组,r2) + break + end + end + + --撞死判断 + + if(((敌人组[n].x-主角.x)*(敌人组[n].x-主角.x)+(敌人组[n].y-主角.y)*(敌人组[n].y-主角.y))<2500)then + 敌人组[n].血量=敌人组[n].血量-1 + 主角.血量=主角.血量-1 + end + + + --显示 + 敌人组[n].显示:显示_高级(敌人组[n].x,敌人组[n].y,敌人组[n].d,敌人组[n].m,敌人组[n].m) + + if(敌人组[n].血量<0)then + if(敌人组[n].类型>6+当前关卡)or(敌人组[n].类型==12)then + if(当前关卡+1<=tonumber(读配置项("Dat/配置.ini","关卡上限","关卡上限")))then + 当前关卡=当前关卡+1 + 游戏状态="" + 胜利音效:播放() + + ----附加 + if(主角.子弹威力*主角.子弹等级<25)then + if(主角.子弹等级>4)then + 主角.子弹威力=主角.子弹威力+1 + 主角.子弹等级=2 + else + 主角.子弹等级=主角.子弹等级+1 + end + 主角.防御=主角.防御+0.1 + end + --附加完 + + else + 游戏状态="胜利" + end + end + local 临时爆炸={ + x=敌人组[n].x+引擎:取随机整数(-10,10), + y=敌人组[n].y+引擎:取随机整数(-10,10), + 类型=D2D_粒子.创建("Dat/大爆炸.psi",爆炸), + 倒计时=25 + } + 血量=血量+2 + table.insert(爆炸特效组,临时爆炸) + 爆炸音效:播放() + table.remove(敌人组,n) + break + end + + + + end + + --敌人子弹 + for n=1,table.getn(敌人子弹组) do + 敌人子弹组[n].类型:显示_高级(敌人子弹组[n].x,敌人子弹组[n].y,敌人子弹组[n].d*P,1,1) + 敌人子弹组[n].x2,敌人子弹组[n].y2=取移动步幅(敌人子弹组[n].d) + if(敌人子弹组[n].射程>0)then + 敌人子弹组[n].x=敌人子弹组[n].x+敌人子弹组[n].x2*4 + 敌人子弹组[n].y=敌人子弹组[n].y+敌人子弹组[n].y2*4 + 敌人子弹组[n].射程=敌人子弹组[n].射程-4 + else + table.remove(敌人子弹组,n) + break + end + --命中判断-- + if(防盾==0)and(主角包围盒:检测_点(敌人子弹组[n].x,敌人子弹组[n].y))then + local 临时爆炸={ + x=主角.x+引擎:取随机整数(-10,10), + y=主角.y+引擎:取随机整数(-10,10), + 类型=D2D_粒子.创建("Dat/爆炸.psi",爆炸), + 倒计时=25 + } + table.insert(爆炸特效组,临时爆炸) + 主角.血量=主角.血量-敌人子弹组[n].攻击力/主角.防御 + table.remove(敌人子弹组,n) + break + end + + end + + ----战斗特效 + for n=1,table.getn(变身特效组) do + 变身特效组[n].精灵:显示_高级(变身特效组[n].x,变身特效组[n].y,变身特效组[n].d,变身特效组[n].m,变身特效组[n].m) + 变身特效组[n].d=变身特效组[n].d+引擎:取随机小数(0,1) + 变身特效组[n].m=变身特效组[n].m+0.05 + 变身特效组[n].精灵:置颜色(ARGB(引擎:取随机整数(100,200),引擎:取随机整数(0,255),引擎:取随机整数(0,255),引擎:取随机整数(0,255))) + if(变身特效组[n].m>1)then + table.remove(变身特效组,n) + break + end + end + for n=1,table.getn(激光特效组) do + if(激光特效组[n].m<80)then + 激光特效组[n].炮弹:显示_高级(激光特效组[n].x,激光特效组[n].y,激光特效组[n].d2,引擎:取随机小数(0,1),8) + 激光特效组[n].精灵:显示_高级(激光特效组[n].x,激光特效组[n].y,激光特效组[n].d,0.7,0.7) + else + 激光特效组[n].精灵:显示_高级(激光特效组[n].x,激光特效组[n].y,激光特效组[n].d,1.5,1.5) + end + 激光特效组[n].d=激光特效组[n].d+引擎:取随机小数(0,1) + 激光特效组[n].m=激光特效组[n].m-1 + 激光特效组[n].精灵:置颜色(ARGB(引擎:取随机整数(180,240),引擎:取随机整数(200,255),引擎:取随机整数(100,200),引擎:取随机整数(0,100))) + if(激光特效组[n].m<0)then + table.remove(激光特效组,n) + break + end + if(激光特效组[n].m==60)then + 激光音效:播放_高级(100,false,1) + end + --命中判断-- + if(防盾==0)and((取两点间角度(激光特效组[n].x,激光特效组[n].y,主角.x,主角.y)+83)*P<激光特效组[n].d2)and((取两点间角度(激光特效组[n].x,激光特效组[n].y,主角.x,主角.y)+97)*P>激光特效组[n].d2)then + if(激光特效组[n].m==60)then + 主角.血量=主角.血量-3/主角.防御 + --爆炸效果 + for r=1,4 do + local 临时爆炸={ + x=主角.x+引擎:取随机整数(-20,20), + y=主角.y+引擎:取随机整数(-20,20), + 类型=D2D_粒子.创建("Dat/爆炸.psi",爆炸), + 倒计时=25 + } + table.insert(爆炸特效组,临时爆炸) + end + end + if(激光特效组[n].m<80)then + 主角.血量=主角.血量-0.02/主角.防御 + end + end + end + for n=1,table.getn(弹幕特效组) do + if(弹幕特效组[n].临时==0)then + 弹幕特效组[n].类型:显示_高级(弹幕特效组[n].x,弹幕特效组[n].y,弹幕特效组[n].d*P,0.6,0.6) + elseif(弹幕特效组[n].临时>4)then + 弹幕特效组[n].类型:显示_高级(弹幕特效组[n].x,弹幕特效组[n].y,弹幕特效组[n].d*P,1.2,1.2) + else + 弹幕特效组[n].类型:显示_高级(弹幕特效组[n].x,弹幕特效组[n].y,弹幕特效组[n].d*P,0.3,0.3) + end + 弹幕特效组[n].d=弹幕特效组[n].d+引擎:取随机小数(0,1) + 弹幕特效组[n].类型:置颜色(ARGB(引擎:取随机整数(100,200),引擎:取随机整数(0,255),引擎:取随机整数(0,255),引擎:取随机整数(0,255))) + if(弹幕特效组[n].临时==0)then + 弹幕特效组[n].x2,弹幕特效组[n].y2=取移动步幅(弹幕特效组[n].d) + if(弹幕特效组[n].射程>0)then + 弹幕特效组[n].x=弹幕特效组[n].x+弹幕特效组[n].x2*4 + 弹幕特效组[n].y=弹幕特效组[n].y+弹幕特效组[n].y2*4 + 弹幕特效组[n].射程=弹幕特效组[n].射程-4 + else + 弹幕特效组[n].临时=弹幕特效组[n].等级+引擎:取随机整数(0,1) + 弹幕特效组[n].d=0 + 弹幕特效组[n].x2=0 + 弹幕特效组[n].y2=0 + end + end + if(弹幕特效组[n].临时==-1)then + table.remove(弹幕特效组,n) + break + end + --变化-- + if(弹幕特效组[n].临时==1)then + if(弹幕特效组[n].d<0)then + local 临时子弹={ + x2=0, + y2=0, + x=弹幕特效组[n].x, + y=弹幕特效组[n].y, + d=取两点间角度(弹幕特效组[n].x,弹幕特效组[n].y,主角.x,主角.y), + 类型=D2D_精灵.创建(子弹图片1,0,0,16,16), + 攻击力=2, + 射程=500 + } + 临时子弹.类型:置中心点(16,16) + table.insert(敌人子弹组,临时子弹) + 子弹音效1:播放() + 弹幕特效组[n].x2=弹幕特效组[n].x2+1 + if(弹幕特效组[n].x2>16)then + 弹幕特效组[n].临时=-1 + end + 弹幕特效组[n].d=10 + else + 弹幕特效组[n].d=弹幕特效组[n].d-1 + end + end + if(弹幕特效组[n].临时==2)then + if(弹幕特效组[n].d<0)then + local 临时子弹={ + x2=0, + y2=0, + x=弹幕特效组[n].x, + y=弹幕特效组[n].y, + d=弹幕特效组[n].x2*30, + 类型=D2D_精灵.创建(子弹图片2,0,0,16,16), + 攻击力=1, + 射程=500+引擎:取随机整数(-50,50) + } + 临时子弹.类型:置中心点(16,16) + table.insert(敌人子弹组,临时子弹) + 子弹音效1:播放() + 弹幕特效组[n].x2=弹幕特效组[n].x2+1 + if(弹幕特效组[n].x2>=47)then + 弹幕特效组[n].临时=-1 + end + 弹幕特效组[n].d=0 + else + 弹幕特效组[n].d=弹幕特效组[n].d-1 + end + end + if(弹幕特效组[n].临时==3)then + if(弹幕特效组[n].d<0)then + local 临时子弹={ + x2=0, + y2=0, + x=弹幕特效组[n].x+引擎:取随机整数(-20,20), + y=弹幕特效组[n].y+引擎:取随机整数(-20,20), + d=取两点间角度(弹幕特效组[n].x,弹幕特效组[n].y,主角.x,主角.y), + 类型=D2D_精灵.创建(子弹图片2,0,0,16,16), + 攻击力=2, + 射程=500+引擎:取随机整数(-50,50) + } + 临时子弹.类型:置中心点(16,16) + table.insert(敌人子弹组,临时子弹) + 子弹音效1:播放() + 弹幕特效组[n].x2=弹幕特效组[n].x2+1 + if(弹幕特效组[n].x2>30)then + 弹幕特效组[n].临时=-1 + end + 弹幕特效组[n].d=0 + else + 弹幕特效组[n].d=弹幕特效组[n].d-1 + end + end + if(弹幕特效组[n].临时==4)then + if(弹幕特效组[n].d<0)then + local 临时子弹={ + x2=0, + y2=0, + x=弹幕特效组[n].x+引擎:取随机整数(-20,20), + y=弹幕特效组[n].y+引擎:取随机整数(-20,20), + d=弹幕特效组[n].x2*30, + 类型=D2D_精灵.创建(子弹图片2,0,0,16,16), + 攻击力=2, + 射程=500+引擎:取随机整数(-50,50) + } + 临时子弹.类型:置中心点(16,16) + table.insert(敌人子弹组,临时子弹) + 子弹音效1:播放() + 弹幕特效组[n].x2=弹幕特效组[n].x2+1 + if(弹幕特效组[n].x2==35)then + 弹幕特效组[n].y=引擎:取随机整数(100,500) + 弹幕特效组[n].x=引擎:取随机整数(100,700) + end + if(弹幕特效组[n].x2>70)then + 弹幕特效组[n].临时=-1 + end + 弹幕特效组[n].d=0 + else + 弹幕特效组[n].d=弹幕特效组[n].d-1 + end + end + if(弹幕特效组[n].临时==5)then + 临时x,临时y=取移动步幅(取两点间角度(主角.x,主角.y,弹幕特效组[n].x,弹幕特效组[n].y)) + 主角.x=主角.x+临时x*2 + 主角.y=主角.y+临时y*2 + if(弹幕特效组[n].d<0)then + local 临时子弹={ + x2=0, + y2=0, + x=弹幕特效组[n].x, + y=弹幕特效组[n].y, + d=弹幕特效组[n].x2*30, + 类型=D2D_精灵.创建(子弹图片2,0,0,16,16), + 攻击力=3, + 射程=500+引擎:取随机整数(-50,150) + } + 临时子弹.类型:置中心点(16,16) + table.insert(敌人子弹组,临时子弹) + 子弹音效1:播放() + local 临时子弹={ + x2=0, + y2=0, + x=弹幕特效组[n].x, + y=弹幕特效组[n].y, + d=375-弹幕特效组[n].x2*30, + 类型=D2D_精灵.创建(子弹图片1,0,0,16,16), + 攻击力=3, + 射程=500+引擎:取随机整数(-50,150) + } + 临时子弹.类型:置颜色(ARGB(255,255,0,100)) + 临时子弹.类型:置中心点(16,16) + table.insert(敌人子弹组,临时子弹) + 弹幕特效组[n].x2=弹幕特效组[n].x2+1 + if(弹幕特效组[n].x2%16==0)then + 弹幕特效组[n].y=引擎:取随机整数(100,500) + 弹幕特效组[n].x=引擎:取随机整数(100,700) + end + if(弹幕特效组[n].x2>63)then + 弹幕特效组[n].临时=-1 + end + 弹幕特效组[n].d=0 + else + 弹幕特效组[n].d=弹幕特效组[n].d-1 + end + end + if(弹幕特效组[n].临时==6)then + 临时x,临时y=取移动步幅(取两点间角度(主角.x,主角.y,弹幕特效组[n].x,弹幕特效组[n].y)) + 主角.x=主角.x+临时x*2 + 主角.y=主角.y+临时y*2 + if(弹幕特效组[n].d<0)then + local 临时子弹={ + x2=0, + y2=0, + x=弹幕特效组[n].x+引擎:取随机整数(-20,20), + y=弹幕特效组[n].y+引擎:取随机整数(-20,20), + d=取两点间角度(弹幕特效组[n].x,弹幕特效组[n].y,主角.x,主角.y), + 类型=D2D_精灵.创建(子弹图片1,0,0,16,16), + 攻击力=3, + 射程=500+引擎:取随机整数(-50,50) + } + 临时子弹.类型:置颜色(ARGB(255,255,0,100)) + 临时子弹.类型:置中心点(16,16) + table.insert(敌人子弹组,临时子弹) + 子弹音效1:播放() + 弹幕特效组[n].x2=弹幕特效组[n].x2+1 + if(弹幕特效组[n].x2%10==0)then + 弹幕特效组[n].y=引擎:取随机整数(100,500) + 弹幕特效组[n].x=引擎:取随机整数(100,700) + end + if(弹幕特效组[n].x2>70)then + 弹幕特效组[n].临时=-1 + end + 弹幕特效组[n].d=0 + else + 弹幕特效组[n].d=弹幕特效组[n].d-1 + end + end + + + end + ----战斗代码完 + end + + + for n=1,table.getn(爆炸特效组) do + 爆炸特效组[n].类型:启动到(爆炸特效组[n].x,爆炸特效组[n].y) + 爆炸特效组[n].类型:更新(时间) + 爆炸特效组[n].类型:显示(爆炸特效组[n].x,爆炸特效组[n].y) + 爆炸特效组[n].倒计时=爆炸特效组[n].倒计时-1 + if(爆炸特效组[n].倒计时<0)then + table.remove(爆炸特效组,n) + break + end + end + + + 渲染结束() + return false +end + + + + + + + + + +--=============================================================================== +-- ■ 网络数据处理() +--=============================================================================== +function 网络数据处理 (命令,参数1,参数2,附加) + + +end + + + + +--=============================================================================-- +-- ■ 网络连接断开() +--=============================================================================-- +function 网络连接断开 () + + +end + + + +--=============================================================================== +-- ■ 屏幕获得焦点() +--=============================================================================== +function 屏幕获得焦点 () + + + return false +end + + + +--=============================================================================== +-- ■ 屏幕失去焦点() +--=============================================================================== +function 屏幕失去焦点 () + + + return false +end + + + +--=============================================================================== +-- ■ 屏幕关闭() +--=============================================================================== +function 屏幕关闭 () + + + + return true +end + + + +--=============================================================================== +-- ■ 渲染区保护() +--=============================================================================== +function 渲染区保护 () + + + return false +end + + + + + + + + -- Gitee