西门子comos教程 (comos西门子)

此篇并非真正意义上的游戏,只是希望借游戏的名义,让大家对COMOS按钮的使用有一个深刻的认识,寓教于乐,寓学于乐!

今天游戏的名称是老鹰捉小鸡。

首先隆重介绍下游戏主角:公鸡,母鸡,小鸡和*狗猎**。

西门子COMOS软件开发定制学习4-小游戏

西门子COMOS软件开发定制学习4-小游戏

游戏说明:

在30秒内,鸡舍随机出现公鸡、母鸡、小鸡和*狗猎**,点击相应角色,获得一定分数,挑战30秒内的最高分。

分数表如下:

西门子COMOS软件开发定制学习4-小游戏

可以看到角色不同相应的分数不同,为了获取高分,玩家需要在随机出现的角色中选择分数最多的,从而耽误时间,造成结果的不确定性。

为了进一步体现游戏不确定性和可玩性,按分数比例,设置了角色出现的概率,分数越高,出现次数越少,甚至界面中会出现只有*狗猎**的情况,也就是必须扣分才能继续。

程序流程图:

西门子COMOS软件开发定制学习4-小游戏

需要说明是,因为我们基于COMOS平台的VBS开发,鉴于VBS没有计时器或时间循环函数,因而我们只能通过点击按钮事件判断当前点击事件距离开始的时间间隔,大于30秒则游戏结束。

同样的,VBS没有音频*放播**控件可以使用,但BGM不仅起到画龙点睛的效果,有时候甚至会成为左右一部作品成败的关键!所以开始游戏前推荐打开QQ音乐搜索“老鹰捉小鸡”,点击*放播**。

西门子COMOS软件开发定制学习4-小游戏

西门子COMOS软件开发定制学习4-小游戏

西门子COMOS软件开发定制学习4-小游戏

游戏思路介绍完了,开始我们的程序开发。首先我们在SO1项目中新建游戏工作层。

西门子COMOS软件开发定制学习4-小游戏

创建游戏界面对象

西门子COMOS软件开发定制学习4-小游戏

为界面对象命名

西门子COMOS软件开发定制学习4-小游戏

新建“老鹰捉小鸡”选项卡

西门子COMOS软件开发定制学习4-小游戏

西门子COMOS软件开发定制学习4-小游戏

在选项卡中新建属性

西门子COMOS软件开发定制学习4-小游戏

依次创建背景图片参数、分数参数、游戏说明参数、开始按钮、公鸡按钮、母鸡按钮、小鸡按钮、*狗猎**按钮。

西门子COMOS软件开发定制学习4-小游戏

参数如下,注意角色的命名规则为A1~4,按得分排序,便于后续调整随机系数。

西门子COMOS软件开发定制学习4-小游戏

初始界面布局

西门子COMOS软件开发定制学习4-小游戏

双击“公鸡”按钮,编辑脚本。

此处用到的关键语句

  • 角色坐标

att.Workset.lib.sui.CtrlProperty (27,Att)=X1 ’x1坐标

att.Workset.lib.sui.CtrlProperty (28,Att)=y1 ’y1坐标

att.Workset.lib.sui.CtrlProperty (29,Att)=4+x1 ‘x2坐标

att.Workset.lib.sui.CtrlProperty (30,Att)=y1+2 ’y2坐标

  • 角色隐藏和显示

att.Layers="~" ’隐藏

att.layers="F" ‘显示

关于工作区域Layers的详细用法暂不介绍

  • 随机数

‘----随机坐标----‘

Randomize‘初始化随机数发生器,否则随机数会不变化

x1=rnd(1)*25+3 ‘x1为角色坐标,25+3为允许角色出现的最大x位置,3为角色允许出现的最小坐标。

‘----随机坐标----‘

‘----随机隐藏----‘

If rnd (1)<0.15*i Then

‘角色的隐藏系数,得分越高的角色隐藏概率越高,本程序取0.15*i,比如公鸡隐藏概率为0.15*4=0.6。

Att.Layers="~" ’隐藏

Else

Att.Layers="F" ‘显示

End If

‘----随机隐藏----‘

公鸡按钮脚本如下:

‘---------------’

Sub OnClick()

’事件:按下按钮之后

If GetSpecOwner.SystemType=13 Then Exit Sub

startTime=owner.spec("StartTime").DisplayValue

Set ScoreAtt=owner.spec("Score")

ScoreAtt.InheritCheckIn

Score=ScoreAtt.Description

Set HistoryScoreAtt=owner.spec("HistoryScore")

HistoryScoreAtt.InheritCheckIn

HistoryScore=HistoryScoreAtt.Description

If startTime<>"" Then

diffVal= DateDiff("s",cdate(startTime),now) ’30秒

owner.spec("Note").SetXValue 0,diffVal

If cdbl(diffVal)>30 Then

If cdbl(Score)>cdbl(HistoryScore) Then

HistoryScore=Score

HistoryScoreAtt.Description=HistoryScore

End If

msgbox "游戏结束!"&vbcrlf&"得分:"&Score&vbcrlf&"历史最高:"&HistoryScore

owner.spec("StartTime").value=""

ScoreAtt.Description="0"

For i=1 To 4

Set att=owner.spec("A"&i)

Att.InheritCheckIn

att.Layers="~" ’隐藏所有角色

Next

owner.spec("StartGame").InheritCheckIn

owner.spec("StartGame").Layers="F"

owner.SaveAll

Project.Workset.lib.refreshcurrentchapterbyspecowner GetSpecOwner

Exit Sub

End If

Else

owner.spec("StartTime").value=now

End If

For i=1 To 4

X1=10

y1=10

Set att=owner.spec("A"&i)

Att.InheritCheckIn

Randomize

If rnd (1)<0.15*i Then’分数越高 隐藏概率越高

Att.Layers="~" ’隐藏

Else

Att.Layers="F"

End If

Randomize

rnd(1)

Randomize

x1=rnd(1)*25+3 ’防止位置超出边界8.5 29.5

Randomize

y1=rnd(1)*23+5 ’防止超出左侧边界6 28

att.Workset.lib.sui.CtrlProperty (27,Att)=X1

att.Workset.lib.sui.CtrlProperty (28,Att)=y1

att.Workset.lib.sui.CtrlProperty (29,Att)=4+x1

att.Workset.lib.sui.CtrlProperty (30,Att)=y1+2

owner.spec("Note").SetXValue 0,owner.spec("Note").GetXValue(0)&vbcrlf&x1&"-"&y1

att.SaveAll

Next

owner.spec("A1").Layers="F" ’*狗猎**始终可见

Score=ScoreAtt.Description

Select Case right(me.Name,1)

Case 1

Score=cdbl(Score)-5

Case 2

Score=cdbl(Score)+1

Case 3

Score=cdbl(Score)+2

Case 4

Score=cdbl(Score)+4

End Select

ScoreAtt.Description=Score

Project.Workset.lib.refreshcurrentchapterbyspecowner GetSpecOwner

End Sub

‘---------------’

依次将母鸡、小鸡、*狗猎**按钮继承公鸡按钮脚本。将公鸡按钮参数拖拽至*狗猎**等角色按钮目录属性中,如下图所示

西门子COMOS软件开发定制学习4-小游戏

点击右下角应用按钮,在弹出的提醒消息中选择“否”

西门子COMOS软件开发定制学习4-小游戏

查看母鸡等角色按钮的脚本,将看到其继承了公鸡中的脚本,呈斜体表示。如公鸡按钮脚本修改,此处自动修改。

西门子COMOS软件开发定制学习4-小游戏

定制“开始游戏”按钮脚本

‘---------------’

Sub OnClick()

’事件:按下按钮之后

If GetSpecOwner.SystemType=13 Then Exit Sub

me.InheritCheckIn

me.Layers="~"

’owner.spec("A4").ScriptEngine.scriptObject.onclick

For i=1 To 4

Set att=owner.spec("A"&i)

Att.InheritCheckIn

Randomize

If rnd (1)<0.1*(i+2) Then’分数越高 隐藏概率越高

Att.Layers="~" ’隐藏

Else

Att.Layers="F"

End If

Randomize

x1=rnd(1)*25+2 ’防止位置超出边界

Randomize

y1=rnd(1)*23+5 ’防止超出左侧边界

att.Workset.lib.sui.CtrlProperty (27,Att)=X1

att.Workset.lib.sui.CtrlProperty (28,Att)=y1

att.Workset.lib.sui.CtrlProperty (29,Att)=3+x1

att.Workset.lib.sui.CtrlProperty (30,Att)=y1+1.5

owner.spec("Note").SetXValue 0,owner.spec("Note").GetXValue(0)&vbcrlf&x1&"-"&y1

Next

owner.spec("A1").Layers="F"

owner.SaveAll

Project.Workset.lib.refreshcurrentchapterbyspecowner GetSpecOwner ’刷新

End Sub

‘---------------’

设置基础对象对象配置

西门子COMOS软件开发定制学习4-小游戏

在单元选项卡,新建对象

西门子COMOS软件开发定制学习4-小游戏

西门子COMOS软件开发定制学习4-小游戏

最后进行游戏测试

西门子COMOS软件开发定制学习4-小游戏

西门子COMOS软件开发定制学习4-小游戏

运行无异常!

西门子COMOS软件开发定制学习4-小游戏

最后插播一条广告:

大扎好,我系牯天乐,我四渣渣辉,介四里没有挽过的船新版本,挤需体验三番钟,里造会干我一样,爱象节款游戏!

欢迎关注~转发~