diff --git a/Java/MonkeySort.java b/Java/MonkeySort.java deleted file mode 100644 index 95f44147592050532a807bf338fb8baeab11335a..0000000000000000000000000000000000000000 --- a/Java/MonkeySort.java +++ /dev/null @@ -1,63 +0,0 @@ -import java.util.Arrays; -import java.util.Random; - -/** - * 猴子排序 - */ -public class MonkeySort { - - public static void main(String[] args) { - int[] arr = {5, 2, 8, 6, 1, 3, 9, 4, 7}; // 待排序的数组 - monkeySort(arr); - System.out.println(Arrays.toString(arr)); - } - - /** - * 猴子排序 - * @param arr - */ - public static void monkeySort(int[] arr) { - Random random = new Random(); - while (!isSorted(arr)) { - shuffle(arr, random); - } - } - - /** - * 判断是否是有序的数组 - * @param arr - * @return - */ - public static boolean isSorted(int[] arr) { - for (int i = 0; i < arr.length - 1; i++) { - if (arr[i] > arr[i + 1]) { - return false; - } - } - return true; - } - - /** - * 随机排序 - * @param arr - * @param random - */ - public static void shuffle(int[] arr, Random random) { - for (int i = 0; i < arr.length; i++) { - int j = random.nextInt(arr.length); - swap(arr, i, j); - } - } - - /** - * 交换位置 - * @param arr - * @param i - * @param j - */ - public static void swap(int[] arr, int i, int j) { - int temp = arr[i]; - arr[i] = arr[j]; - arr[j] = temp; - } -} \ No newline at end of file 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" deleted file mode 100644 index 7e5f19dd77fa45f634451ddd2a54471cbd5d1431..0000000000000000000000000000000000000000 --- "a/golang/\345\245\207\346\200\252\347\232\204for\345\276\252\347\216\257.go" +++ /dev/null @@ -1,37 +0,0 @@ -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循环了 - - } - } - -} diff --git a/js/check.js b/js/check.js new file mode 100644 index 0000000000000000000000000000000000000000..432761c03021a8a569236214cebcacbd78e05c95 --- /dev/null +++ b/js/check.js @@ -0,0 +1,120 @@ +if (m_Str2.Find("'") >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find(':') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('/') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('!') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('@') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('#') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('$') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('%') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('&') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('^') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('*') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('(') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find(')') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('/') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('|') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find(':') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('[') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find(']') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('{') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} +if (m_Str2.Find('}') >= 0) { + AfxMessageBox("您输入的包含非法字符"); + m_Str2 = ""; + UpdateData(FALSE); + return; +} \ No newline at end of file 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" deleted file mode 100644 index 57cc8c834976ded7f259d14bc69b116dd5c11d1d..0000000000000000000000000000000000000000 --- "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" +++ /dev/null @@ -1,626 +0,0 @@ ---=============================================================================-- --- Yuns的垃圾游戏史 第一篇 : --- --- 简单解释一下:那是七年之前的时候,那时候的我还没有学过什么程序语言,也就高中时候 --- 信息课上接触的一点VB的皮毛,在一片荒野之中,找到了一个好玩具:EDGameMaker,故事 --- 从此开始…… --- 简单看了官方的Demo之后,我就以极度粗野的风格写出了几个东西,在现在看了,简直是一个 --- 离谱 --- 这个时间节点的我,其实不知道这是Lua,不知道函数什么的,就是楞写!!! - --- 第一个,试水作:飞机游戏,总体是能运行的,而且是仅能运行! ---=============================================================================-- - - ---=============================================================================-- --- ■ 加载运行库 ---=============================================================================-- -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 - - - - - - - - diff --git "a/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" "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" deleted file mode 100644 index 3ceb7926601cf25e03f2cf7c9a9582ebcb659acc..0000000000000000000000000000000000000000 --- "a/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" +++ /dev/null @@ -1,3668 +0,0 @@ ---=============================================================================-- --- 接上回: --- 写出第一个游戏之后,我又用同样的水平写出来好多个奇怪的鬼东西 --- 降魔路 -- 能运行,第一次有声音,但没法玩 ---=============================================================================-- - - ---=============================================================================-- --- ■ 加载运行库 ---=============================================================================-- -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 - - - - - - - - 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" deleted file mode 100644 index 624557aaa7351f931df7db76fe6a658fb8c80caa..0000000000000000000000000000000000000000 --- "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" +++ /dev/null @@ -1,1985 +0,0 @@ - ---=============================================================================-- --- 总是要成长的…… - --- 一段时间后,我终于写出了一个真正可玩的游戏:板砖记 --- 演示视频: 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 - - - - - - - - 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" deleted file mode 100644 index 8eb1ab1c2e928b008b1bfe5124b7b0dd07316b8d..0000000000000000000000000000000000000000 --- "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" +++ /dev/null @@ -1,1003 +0,0 @@ - ---=============================================================================-- --- 这个时间点 我已经知道简单的封装了 --- 在这个游戏中,主角被封装为单独的一个类 ---=============================================================================-- - ---=============================================================================-- --- ■ 加载运行库 ---=============================================================================-- -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 - - - - - - - - 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" deleted file mode 100644 index b8f99478e1d2b749644c5f866f3a8da7208104b9..0000000000000000000000000000000000000000 --- "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" +++ /dev/null @@ -1,1830 +0,0 @@ - ---=============================================================================-- --- 演示: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 - - - - - - - - diff --git a/python/password.py b/python/password.py deleted file mode 100644 index c1ca5fdb77044fcf6a5287951da5b1b21b44d389..0000000000000000000000000000000000000000 --- a/python/password.py +++ /dev/null @@ -1,42 +0,0 @@ -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 diff --git a/shell/bash-completion/README.md b/shell/bash-completion/README.md deleted file mode 100644 index 643af9509236856c685126501468267d2782d74d..0000000000000000000000000000000000000000 --- a/shell/bash-completion/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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 deleted file mode 100644 index 4ff8b1fc7b94fe475c46c6a4966ed154f538bf53..0000000000000000000000000000000000000000 --- a/shell/bash-completion/bash-completion-comgen-and-IFS.sh +++ /dev/null @@ -1,180 +0,0 @@ -#!/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 deleted file mode 100644 index e11df43e4845fd897a8184ed321ff65089428425..0000000000000000000000000000000000000000 --- a/shell/bash-completion/bash-completion-comgen.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/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 deleted file mode 100644 index df39112035d7f719ff0f70d6d09fcbed1e50c8b0..0000000000000000000000000000000000000000 --- a/shell/bash-completion/result.txt +++ /dev/null @@ -1,11 +0,0 @@ -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 下载页面