开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 5258|回复: 19
收起左侧

[易语言纯源码] e语言游戏原创 给个例程

[复制链接]
结帖率:100% (1/1)
发表于 2018-4-2 13:32:45 | 显示全部楼层 |阅读模式   山东省济宁市
分享源码
界面截图: -
是否带模块: -
备注说明: -
尽情下载
.版本 2
.支持库 EdirectX
.支持库 wmp9
.程序集 窗口程序集1
.程序集变量 主屏幕, 屏幕
.程序集变量 缓冲页面, 页面
.程序集变量 主页面, 页面
.程序集变量 数据页面, 页面, , "0"
.程序集变量 游戏进行中, 逻辑型
.程序集变量 Unit, 单位, , "200"
.程序集变量 生命, 整数型
.程序集变量 StartPoint, 整数型, , "7"
.程序集变量 Key, 整数型, , "7"
.程序集变量 Keyed, 逻辑型, , "7"
.程序集变量 Hit, 整数型
.程序集变量 统计数据, 统计数据
.程序集变量 音符队列, 队列, , "0"
.程序集变量 游戏循环数, 整数型
.程序集变量 队列位置, 整数型
.程序集变量 暂停, 逻辑型
.程序集变量 当前MP3, 文本型
.程序集变量 Free, 逻辑型
.程序集变量 Wave, WAVE声音
.子程序 __启动窗口_创建完毕
_启动窗口.可视 = 真
置随机数种子 ()
.如果 (DirexcX初始化 ())
.否则
    信息框 (“DirectX初始化失败”, 16, “错误”)
    返回 ()
.如果结束
游戏速度 = 5
音符数量 = 8
DirexcX初始化 ()

.子程序 游戏主循环
.判断循环首 (游戏进行中)
    _启动窗口.标题 = “劲乐团  Playing(” + 当前MP3 + “)”
    .如果真 (游戏循环数 > 100 且 取文本左边 (播放器.状态, 4) ≠ “正在” 且 取单位数 () = 0)
        游戏进行中 = 假
        开始游戏.标题 = “开始游戏”
        _启动窗口.标题 = “过关”
        设置难度.禁止 = 假
        暂停游戏.禁止 = 真
    .如果真结束
    .如果真 (取反 (暂停) 且 取反 (Free))
        游戏处理 ()
        游戏渲染 ()
    .如果真结束
    延时 (20)
    处理事件 ()
    游戏循环数 = 游戏循环数 + 1
.判断循环尾 ()
.子程序 游戏处理
.局部变量 单位号, 整数型
.局部变量 随机数, 整数型
.如果真 (取文本左边 (播放器.状态, 4) = “正在”)
    .如果真 (音符队列 [队列位置].出现时间 = 游戏循环数)
        单位号 = 取未使用单位 ()
        随机数 = 音符队列 [队列位置].值
        ' 随机数 = 取随机数 (1, 7)
        Unit [单位号].是否已经使用 = 真
        Unit [单位号].类型 = 1
        Unit [单位号].坐标.x = StartPoint [随机数]
        Unit [单位号].坐标.y = 0
        Unit [单位号].移动速度 = 游戏速度
        Unit [单位号].消灭键 = Key [随机数]
        .判断开始 (随机数 = 1 或 随机数 = 3 或 随机数 = 5 或 随机数 = 7)
            Unit [单位号].使用页面 = 2
        .默认
        .判断结束
        .判断开始 (随机数 = 2 或 随机数 = 6)
            Unit [单位号].使用页面 = 4
        .默认
        .判断结束
        .判断开始 (随机数 = 4)
            Unit [单位号].使用页面 = 3
        .默认
        .判断结束
        队列位置 = 队列位置 + 1
    .如果真结束
.如果真结束
单位移动 ()
.子程序 游戏渲染
.局部变量 j, 整数型
.局部变量 生命文本, 文本型
.局部变量 页面大小, 整数型
缓冲页面.填充页面 (0)
' 画单位
.判断开始 (Keyed [1])
    数据页面 [5].块复制 (缓冲页面, StartPoint [1], 120, )
.默认
.判断结束
.判断开始 (Keyed [7])
    数据页面 [5].块复制 (缓冲页面, StartPoint [7], 120, )
.默认
.判断结束
.判断开始 (Keyed [2])
    数据页面 [6].块复制 (缓冲页面, StartPoint [2], 120, )
.默认
.判断结束
.判断开始 (Keyed [6])
    数据页面 [6].块复制 (缓冲页面, StartPoint [6], 120, )
.默认
.判断结束
.判断开始 (Keyed [3])
    数据页面 [5].块复制 (缓冲页面, StartPoint [3], 120, )
.默认
.判断结束
.判断开始 (Keyed [5])
    数据页面 [5].块复制 (缓冲页面, StartPoint [5], 120, )
.默认
.判断结束
.判断开始 (Keyed [4])
    数据页面 [7].块复制 (缓冲页面, StartPoint [4], 120, )
.默认
.判断结束
.计次循环首 (200, j)
    .如果真 (Unit [j].是否已经使用)
        .判断开始 (Unit [j].类型 = 1)
            数据页面 [Unit [j].使用页面].透空块复制 (缓冲页面, Unit [j].坐标.x, Unit [j].坐标.y, )
        .默认
        .判断结束
        .判断开始 (Unit [j].类型 = 2)
            数据页面 [Unit [j].变量 [1]].透空块复制 (缓冲页面, Unit [j].坐标.x, Unit [j].坐标.y, )
            Unit [j].变量 [2] = Unit [j].变量 [2] - 1
            .如果真 (Unit [j].变量 [2] = 0)
                Unit [j].变量 [2] = 5
                Unit [j].变量 [1] = Unit [j].变量 [1] + 1
                .如果真 (Unit [j].变量 [1] > 13)
                    销毁单位 (j)
                .如果真结束
            .如果真结束
        .默认
        .判断结束
    .如果真结束
.计次循环尾 ()
缓冲页面.填充矩形 (0, 0, 生命 × 0.75, 10, #灰绿)
' 缓冲页面.写文字 (10, 465, #白色, 生命文本)
' 画键盘
.如果真 (Hit > 1)
    缓冲页面.写文字 (60, 150, 取随机数 (25000, 65535), “Combo ” + 到文本 (Hit))
.如果真结束
数据页面 [1].块复制 (缓冲页面, 0, 427, )
.如果真 (取反 (游戏进行中))
    缓冲页面.写文字 (45, 200, #嫩黄, “G A M E  O V E R”)
    缓冲页面.写文字 (45, 215, #嫩黄, “最终得分:” + 到文本 (统计数据.得分))
    缓冲页面.写文字 (45, 230, #嫩黄, “击中:” + 到文本 (统计数据.击中))
    缓冲页面.写文字 (45, 245, #嫩黄, “击空:” + 到文本 (统计数据.击空))
    缓冲页面.写文字 (45, 260, #嫩黄, “MISS:” + 到文本 (统计数据.Miss))
    缓冲页面.写文字 (45, 275, #嫩黄, “Max Hit:” + 到文本 (统计数据.最大连击))
.如果真结束
缓冲页面.块复制 (主页面, 0, 0, )
主屏幕.交换页面 (假, 真, 假)
.子程序 游戏设置
游戏速度 = 到数值 (窗口1.编辑框1.内容)
音符数量 = 到数值 (窗口1.编辑框2.内容)
.子程序 单位移动
.局部变量 j, 整数型
.计次循环首 (200, j)
    .如果真 (Unit [j].是否已经使用 且 Unit [j].类型 = 1)
        .如果 (Unit [j].坐标.y > 430)
            销毁单位 (j)
            生命 = 生命 - 1
            Hit = 0
            统计数据.Miss = 统计数据.Miss + 1
            .如果真 (生命 = 0)
                设置难度.禁止 = 假
                暂停游戏.禁止 = 真
                游戏进行中 = 假
                开始游戏.标题 = “开始游戏”
                跳出循环 ()
            .如果真结束
        .否则
            Unit [j].坐标.y = Unit [j].坐标.y + Unit [j].移动速度
        .如果结束
    .如果真结束
.计次循环尾 ()
.子程序 取未使用单位, 整数型
.局部变量 j, 整数型
.计次循环首 (200, j)
    .如果真 (取反 (Unit [j].是否已经使用))
        返回 (j)
    .如果真结束
.计次循环尾 ()
返回 (0)
.子程序 销毁单位
.参数 单位号, 整数型
.局部变量 j, 整数型
Unit [单位号].坐标.x = 0
Unit [单位号].坐标.y = 0
Unit [单位号].使用页面 = 0
Unit [单位号].是否已经使用 = 假
Unit [单位号].消灭键 = 0
Unit [单位号].类型 = 0
.计次循环首 (10, j)
    Unit [单位号].变量 [j] = 0
.计次循环尾 ()
.子程序 __启动窗口_按下某键, 逻辑型
.参数 键代码, 整数型
.参数 功能键状态, 整数型
.局部变量 j, 整数型
.局部变量 j1, 整数型
.局部变量 单位号, 整数型
.计次循环首 (7, j)
    .如果真 (键代码 = Key [j])
        Wave.播放 (1)
        .计次循环首 (200, j1)
            .如果真 (Unit [201 - j1].消灭键 = 键代码 且 Unit [201 - j1].坐标.y > 365 且 Keyed [j] = 假)
                ' 暂停 ()
                Hit = Hit + 1
                .如果真 (Hit > 统计数据.最大连击)
                    统计数据.最大连击 = Hit
                .如果真结束
                统计数据.得分 = 统计数据.得分 + Hit × 10
                统计数据.击中 = 统计数据.击中 + 1
                单位号 = 取未使用单位 ()
                Unit [单位号].是否已经使用 = 真
                Unit [单位号].类型 = 2
                Unit [单位号].坐标.x = Unit [201 - j1].坐标.x
                Unit [单位号].坐标.y = 395
                Unit [单位号].移动速度 = 0
                Unit [单位号].消灭键 = 0
                Unit [单位号].变量 [1] = 8
                Unit [单位号].变量 [2] = 5
                销毁单位 (201 - j1)
                Keyed [j] = 真
                返回 ()
            .如果真结束
        .计次循环尾 ()
        Keyed [j] = 真
        统计数据.击空 = 统计数据.击空 + 1
    .如果真结束
.计次循环尾 ()
.子程序 载入MP3, 逻辑型
.局部变量 Data, 字节集
.局部变量 j, 整数型
.局部变量 temp, 队列
.局部变量 t, 整数型

通用对话框1.文件名 = “”
通用对话框1.打开 ()
.如果真 (通用对话框1.文件名 = “”)
    返回 (假)
.如果真结束
_启动窗口.标题 = “Loading . . .”
清除数组 (音符队列)
Data = 读入文件 (通用对话框1.文件名)
.计次循环首 (取字节集长度 (Data), j)
    .如果真 (到数值 (Data [j]) < 音符数量 且 到数值 (Data [j]) > 0)
        t = Data [j] % 7
        .如果真 (t = 0)
            t = 7
        .如果真结束
        temp.值 = t
        temp.出现时间 = j
        输出调试文本 (temp.出现时间)
        加入成员 (音符队列, temp)
    .如果真结束
.计次循环尾 ()
' 输出调试文本 (取数组成员数 (音符队列))
当前MP3 = 通用对话框1.文件名
返回 (真)
.子程序 游戏初始化
.局部变量 j, 整数型
游戏进行中 = 真
.计次循环首 (200, j)
    销毁单位 (j)
.计次循环尾 ()
StartPoint [1] = 1
StartPoint [2] = 30
StartPoint [3] = 52
StartPoint [4] = 82
StartPoint [5] = 112
StartPoint [6] = 140
StartPoint [7] = 162
Key [1] = #S键
Key [2] = #D键
Key [3] = #F键
Key [4] = #空格键
Key [5] = #J键
Key [6] = #K键
Key [7] = #L键
统计数据.得分 = 0
统计数据.击中 = 0
统计数据.击空 = 0
统计数据.最大连击 = 0
生命 = 100
队列位置 = 1
游戏循环数 = 0
暂停 = 假
暂停游戏.标题 = “暂停游戏”
播放器.地址 = 当前MP3
游戏主循环 ()
.子程序 DirexcX初始化, 逻辑型
.局部变量 临时页面, 页面
.局部变量 资源列表, 文本型, , "0"
.局部变量 j, 整数型
.局部变量 CDHwnd, 声音
.如果 (主屏幕.创建窗口模式 (_启动窗口.取窗口句柄 (), 192, 480))
    主屏幕.淡入到黑色 (10)
    主屏幕.交换页面 (假, 真, 假)
    主页面 = 主屏幕.取后台页面 ()
    缓冲页面.建空页面 (主屏幕, 192, 480, )
    资源列表 = 分割文本 (到文本 (读入文件 (“resfile.txt”)), #换行符, )
    .计次循环首 (取数组成员数 (资源列表), j)
        临时页面.建位图页面 (主屏幕, 资源列表 [j], )
        临时页面.置关键色 (0)
        加入成员 (数据页面, 临时页面)
    .计次循环尾 ()
    CDHwnd.初始化 (_启动窗口.取窗口句柄 (), )
    输出调试文本 (Wave.载入Wave文件 (CDHwnd, “Sound.wav”, ))
.否则
    返回 (假)
.如果结束
返回 (真)

.子程序 __启动窗口_放开某键, 逻辑型
.参数 键代码, 整数型
.参数 功能键状态, 整数型
.局部变量 j, 整数型
.计次循环首 (7, j)
    .如果真 (键代码 = Key [j])
        Keyed [j] = 假
    .如果真结束
.计次循环尾 ()
.子程序 __启动窗口_失去焦点
.局部变量 j, 整数型
Free = 真
.计次循环首 (7, j)
    Keyed [j] = 假
.计次循环尾 ()
.子程序 取单位数, 整数型
.局部变量 j, 整数型
.局部变量 a, 整数型
.计次循环首 (200, j)
    .如果真 (Unit [j].是否已经使用)
        a = a + 1
    .如果真结束
.计次循环尾 ()
返回 (a)
.子程序 _开始游戏_被选择
.如果真 (游戏进行中)
    开始游戏.标题 = “开始游戏”
    当前MP3 = “”
    播放器.地址 = “”
    游戏进行中 = 假
    设置难度.禁止 = 假
    暂停游戏.禁止 = 真
    返回 ()
.如果真结束
.如果真 (载入MP3 ())
    开始游戏.标题 = “结束游戏”
    设置难度.禁止 = 真
    暂停游戏.禁止 = 假
    游戏初始化 ()
.如果真结束

.子程序 _暂停游戏_被选择
.如果 (暂停)
    暂停 = 假
    暂停游戏.标题 = “暂停游戏”
.否则
    暂停 = 真
    暂停游戏.标题 = “继续游戏”
.如果结束

.子程序 _退出_被选择
结束 ()

.子程序 _设置难度_被选择
.如果真 (游戏进行中)
    信息框 (“现在不能设置难度”, 64, “劲乐”)
    返回 ()
.如果真结束
载入 (窗口1, , 真)
.子程序 _载入MP3_被选择
.如果真 (取反 (载入MP3 ()))
.如果真结束

.子程序 __启动窗口_获得焦点
Free = 假

劲乐.e

38.64 KB, 下载次数: 113, 下载积分: 精币 -2 枚


结帖率:0% (0/1)
发表于 2018-6-24 14:10:33 | 显示全部楼层   广东省东莞市
打不开
回复 支持 反对

使用道具 举报

发表于 2018-4-20 23:43:26 | 显示全部楼层   安徽省合肥市

没有截图可以看一下吗
回复 支持 反对

使用道具 举报

结帖率:62% (8/13)
发表于 2018-4-18 22:48:36 | 显示全部楼层   广西壮族自治区南宁市
下载学习一下
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2018-4-18 15:36:47 | 显示全部楼层   广西壮族自治区来宾市
下载一个看看………………
回复 支持 反对

使用道具 举报

发表于 2018-4-16 14:03:29 | 显示全部楼层   菲律宾
6666666666666
回复 支持 反对

使用道具 举报

结帖率:75% (3/4)

签到天数: 7 天

发表于 2018-4-14 11:56:01 | 显示全部楼层   上海市上海市
没有截图可以看一下吗
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2018-4-12 01:03:48 | 显示全部楼层   云南省文山壮族苗族自治州
运行报错 目测缺少resfile.txt
回复 支持 反对

使用道具 举报

结帖率:98% (60/61)
发表于 2018-4-6 19:14:03 | 显示全部楼层   广东省东莞市

支持楼主赞赞
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2018-4-5 00:38:46 | 显示全部楼层   广东省梅州市
还行。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

结帖率:18% (2/11)
发表于 2018-4-4 19:55:58 | 显示全部楼层   广东省韶关市
这个点个赞,支持下,也希望精易论坛越办越好
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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