此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
依次創建背景圖片參數、分數參數、遊戲說明參數、開始按鈕、公雞按鈕、母雞按鈕、小雞按鈕、獵狗按鈕。
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
依次創建背景圖片參數、分數參數、遊戲說明參數、開始按鈕、公雞按鈕、母雞按鈕、小雞按鈕、獵狗按鈕。
參數如下,注意角色的命名規則為A1~4,按得分排序,便於後續調整隨機係數。
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
依次創建背景圖片參數、分數參數、遊戲說明參數、開始按鈕、公雞按鈕、母雞按鈕、小雞按鈕、獵狗按鈕。
參數如下,注意角色的命名規則為A1~4,按得分排序,便於後續調整隨機係數。
初始界面佈局
此篇並非真正意義上的遊戲,只是希望借遊戲的名義,讓大家對COMOS按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
依次創建背景圖片參數、分數參數、遊戲說明參數、開始按鈕、公雞按鈕、母雞按鈕、小雞按鈕、獵狗按鈕。
參數如下,注意角色的命名規則為A1~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按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
依次創建背景圖片參數、分數參數、遊戲說明參數、開始按鈕、公雞按鈕、母雞按鈕、小雞按鈕、獵狗按鈕。
參數如下,注意角色的命名規則為A1~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按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
依次創建背景圖片參數、分數參數、遊戲說明參數、開始按鈕、公雞按鈕、母雞按鈕、小雞按鈕、獵狗按鈕。
參數如下,注意角色的命名規則為A1~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按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
依次創建背景圖片參數、分數參數、遊戲說明參數、開始按鈕、公雞按鈕、母雞按鈕、小雞按鈕、獵狗按鈕。
參數如下,注意角色的命名規則為A1~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
‘---------------’
依次將母雞、小雞、獵狗按鈕繼承公雞按鈕腳本。將公雞按鈕參數拖拽至獵狗等角色按鈕目錄屬性中,如下圖所示
點擊右下角應用按鈕,在彈出的提醒消息中選擇“否”
查看母雞等角色按鈕的腳本,將看到其繼承了公雞中的腳本,呈斜體表示。如公雞按鈕腳本修改,此處自動修改。
定製“開始遊戲”按鈕腳本
‘---------------’
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按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
依次創建背景圖片參數、分數參數、遊戲說明參數、開始按鈕、公雞按鈕、母雞按鈕、小雞按鈕、獵狗按鈕。
參數如下,注意角色的命名規則為A1~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
‘---------------’
依次將母雞、小雞、獵狗按鈕繼承公雞按鈕腳本。將公雞按鈕參數拖拽至獵狗等角色按鈕目錄屬性中,如下圖所示
點擊右下角應用按鈕,在彈出的提醒消息中選擇“否”
查看母雞等角色按鈕的腳本,將看到其繼承了公雞中的腳本,呈斜體表示。如公雞按鈕腳本修改,此處自動修改。
定製“開始遊戲”按鈕腳本
‘---------------’
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按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
依次創建背景圖片參數、分數參數、遊戲說明參數、開始按鈕、公雞按鈕、母雞按鈕、小雞按鈕、獵狗按鈕。
參數如下,注意角色的命名規則為A1~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
‘---------------’
依次將母雞、小雞、獵狗按鈕繼承公雞按鈕腳本。將公雞按鈕參數拖拽至獵狗等角色按鈕目錄屬性中,如下圖所示
點擊右下角應用按鈕,在彈出的提醒消息中選擇“否”
查看母雞等角色按鈕的腳本,將看到其繼承了公雞中的腳本,呈斜體表示。如公雞按鈕腳本修改,此處自動修改。
定製“開始遊戲”按鈕腳本
‘---------------’
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按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
依次創建背景圖片參數、分數參數、遊戲說明參數、開始按鈕、公雞按鈕、母雞按鈕、小雞按鈕、獵狗按鈕。
參數如下,注意角色的命名規則為A1~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
‘---------------’
依次將母雞、小雞、獵狗按鈕繼承公雞按鈕腳本。將公雞按鈕參數拖拽至獵狗等角色按鈕目錄屬性中,如下圖所示
點擊右下角應用按鈕,在彈出的提醒消息中選擇“否”
查看母雞等角色按鈕的腳本,將看到其繼承了公雞中的腳本,呈斜體表示。如公雞按鈕腳本修改,此處自動修改。
定製“開始遊戲”按鈕腳本
‘---------------’
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按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
依次創建背景圖片參數、分數參數、遊戲說明參數、開始按鈕、公雞按鈕、母雞按鈕、小雞按鈕、獵狗按鈕。
參數如下,注意角色的命名規則為A1~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
‘---------------’
依次將母雞、小雞、獵狗按鈕繼承公雞按鈕腳本。將公雞按鈕參數拖拽至獵狗等角色按鈕目錄屬性中,如下圖所示
點擊右下角應用按鈕,在彈出的提醒消息中選擇“否”
查看母雞等角色按鈕的腳本,將看到其繼承了公雞中的腳本,呈斜體表示。如公雞按鈕腳本修改,此處自動修改。
定製“開始遊戲”按鈕腳本
‘---------------’
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按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
依次創建背景圖片參數、分數參數、遊戲說明參數、開始按鈕、公雞按鈕、母雞按鈕、小雞按鈕、獵狗按鈕。
參數如下,注意角色的命名規則為A1~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
‘---------------’
依次將母雞、小雞、獵狗按鈕繼承公雞按鈕腳本。將公雞按鈕參數拖拽至獵狗等角色按鈕目錄屬性中,如下圖所示
點擊右下角應用按鈕,在彈出的提醒消息中選擇“否”
查看母雞等角色按鈕的腳本,將看到其繼承了公雞中的腳本,呈斜體表示。如公雞按鈕腳本修改,此處自動修改。
定製“開始遊戲”按鈕腳本
‘---------------’
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按鈕的使用有一個深刻的認識,寓教於樂,寓學於樂!
今天遊戲的名稱是老鷹捉小雞。
首先隆重介紹下游戲主角:公雞,母雞,小雞和獵狗。
遊戲說明:
在30秒內,雞舍隨機出現公雞、母雞、小雞和獵狗,點擊相應角色,獲得一定分數,挑戰30秒內的最高分。
分數表如下:
可以看到角色不同相應的分數不同,為了獲取高分,玩家需要在隨機出現的角色中選擇分數最多的,從而耽誤時間,造成結果的不確定性。
為了進一步體現遊戲不確定性和可玩性,按分數比例,設置了角色出現的概率,分數越高,出現次數越少,甚至界面中會出現只有獵狗的情況,也就是必須扣分才能繼續。
程序流程圖:
需要說明是,因為我們基於COMOS平臺的VBS開發,鑑於VBS沒有計時器或時間循環函數,因而我們只能通過點擊按鈕事件判斷當前點擊事件距離開始的時間間隔,大於30秒則遊戲結束。
同樣的,VBS沒有音頻播放控件可以使用,但BGM不僅起到畫龍點睛的效果,有時候甚至會成為左右一部作品成敗的關鍵!所以開始遊戲前推薦打開QQ音樂搜索“老鷹捉小雞”,點擊播放。
遊戲思路介紹完了,開始我們的程序開發。首先我們在SO1項目中新建遊戲工作層。
創建遊戲界面對象
為界面對象命名
新建“老鷹捉小雞”選項卡
在選項卡中新建屬性
依次創建背景圖片參數、分數參數、遊戲說明參數、開始按鈕、公雞按鈕、母雞按鈕、小雞按鈕、獵狗按鈕。
參數如下,注意角色的命名規則為A1~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
‘---------------’
依次將母雞、小雞、獵狗按鈕繼承公雞按鈕腳本。將公雞按鈕參數拖拽至獵狗等角色按鈕目錄屬性中,如下圖所示
點擊右下角應用按鈕,在彈出的提醒消息中選擇“否”
查看母雞等角色按鈕的腳本,將看到其繼承了公雞中的腳本,呈斜體表示。如公雞按鈕腳本修改,此處自動修改。
定製“開始遊戲”按鈕腳本
‘---------------’
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
‘---------------’
設置基礎對象對象配置
在單元選項卡,新建對象
最後進行遊戲測試
運行無異常!
最後插播一條廣告:
大紮好,我係牯天樂,我四渣渣輝,介四里沒有挽過的船新版本,擠需體驗三番鍾,裡造會幹我一樣,愛象節款遊戲!
歡迎關注~轉發~