• R/O
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

ヤルハラのおもち


Commit MetaInfo

Revision2 (tree)
Time2013-12-15 15:37:52
Authorsyun77

Log Message

オリジナル版のソースコードを追加

Change Summary

Incremental Difference

--- original/mikan.cpp (nonexistent)
+++ original/mikan.cpp (revision 2)
@@ -0,0 +1,261 @@
1+//初期化・定義****************************************
2+
3+//画面初期化と部品ロード
4+ // 画面サイズ設定
5+ scr_width = 400
6+ scr_height = 300
7+
8+ // 画面作成
9+ screen 0,scr_width,scr_height
10+ // キャプション設定
11+ title "ヤルハラのおもち"
12+ buffer 2,scr_width,scr_height //合成用バッファ
13+ buffer 3,scr_width,scr_height //背景
14+ picload "bg.bmp"
15+ buffer 4 //メイン部品
16+ picload "mikan.bmp"
17+
18+//パーツ定義
19+ chrpattern = 12
20+ psize_x = 64
21+ psize_y = 32
22+ // パーツ配列定義
23+ dim parts_x,chrpattern // 座標(X)
24+ dim parts_y,chrpattern // 座標(Y)
25+ dim parts_probability,chrpattern // 出現確率
26+//キャラクタ配置テーブル
27+ parts_x = 0, 64,128,192, 0, 64,128,192, 0, 64,128,192
28+ parts_y = 0, 0, 0, 0, 32, 32, 32, 32, 64, 64, 64, 64
29+//キャラクタ生起確率
30+ parts_probability=18,8,3,1, 25,3,1,1, 25,3,1,1
31+ probability_max=90
32+
33+//遷移 (0:タイトル画面,1:ゲーム,2:ゲームオーバー)
34+ scene = 0
35+
36+//スコア セーブはまだ
37+ score = 0
38+
39+//変数初期化
40+ parts_now = 0
41+ parts_pos_x = 0
42+ speed = 10
43+ mode = 0
44+ parts_spr = 0
45+ // 配置した製品の管理
46+ dim product,3
47+ product = -1,-1,-1 //製品 下・中・上の順
48+ randomize
49+
50+// BGM読み込み
51+mmload "omoti_lofi.wav",0,1
52+
53+
54+*titlesc
55+//タイトル
56+gsel 0
57+repeat
58+ cls 4
59+ color 255,255,255
60+ mes "ヤルハラのおもち"
61+ mes "キー操作"
62+ mes "→:右へ"
63+ mes "↓:下へ"
64+ wait 10
65+ stick key
66+ if (key != 0) {
67+ // BGM再生開始
68+ mmplay 0
69+ // メインゲームへ
70+ goto *gameloop
71+ }
72+loop
73+
74+*gameover
75+//ゲームオーバー
76+gsel 0
77+mmstop
78+repeat
79+ cls 4
80+ color 255,255,255
81+ mes "ゲームオーバー"
82+ wait 10
83+ stick key
84+ if (key != 0) {
85+ // 失敗フラグを初期化
86+ error_product = 0
87+ // スコアを初期化
88+ score = 0
89+ // タイトル画面へ
90+ goto *titlesc
91+ }
92+loop
93+
94+
95+
96+//メインループ
97+*gameloop
98+
99+repeat
100+ // スコア表示
101+ title "ヤルハラのおもち SCORE:"+score+"円"
102+ await 1
103+ // 背景描画
104+ gosub *draw_bg
105+
106+ switch mode
107+ case 0
108+ // 部品移動中
109+ parts_pos_x += speed
110+ if (parts_pos_x > scr_width/2-32) {
111+ // 移動完了・プレイヤー入力へ
112+ mode = 1
113+ }
114+ swbreak
115+
116+ case 1
117+ stick key,39
118+ if key&4 {
119+ // 部品を捨てる
120+ mode = 2
121+ }
122+ if key&8 {
123+ //
124+ parts_pos_x=0
125+ mode = 0
126+ // 部品を配置する
127+ gosub *put_product
128+ // 次の部品を取り出す
129+ gosub *partsmake
130+ }
131+ swbreak
132+
133+ case 2
134+ // 画面外に部品を移動させる
135+ parts_pos_x += speed
136+ if (parts_pos_x > scr_width) {
137+ // 画面外まで移動した
138+ parts_pos_x=0
139+ mode = 0
140+ // 次の部品を取り出す
141+ gosub *partsmake
142+ }
143+ swbreak
144+ swend
145+
146+ if error_product = 1 : break // 失敗したら処理を中断
147+
148+ // 部品の座標を設定
149+ pos parts_pos_x,50
150+
151+ // パーツを設定
152+ parts_spr = parts_now
153+ gosub *draw_chr
154+ gosub *draw_product
155+ gosub *maindraw
156+loop
157+
158+if error_product = 1 : goto *gameover // ゲームオーバー処理へ
159+
160+// -----------------------------------------------
161+// 部品の配置
162+*put_product
163+ if ( product(2) == -1 ) { putpos = 2 } // 一番上が空いている
164+ if ( product(1) == -1 ) { putpos = 1 } // 真ん中が空いている
165+ if ( product(0) == -1 ) { putpos = 0 } // 一番下が空いている
166+
167+ // 現在の部品を製品として配置
168+ product(putpos) = parts_now
169+
170+ if ( product(2) > -1 ) {
171+
172+ // 一番上に部品を配置した
173+// gosub *draw_chr
174+ gosub *draw_product
175+ gosub *maindraw
176+ wait 50
177+
178+ // 失敗判定
179+ gosub *scan_product
180+
181+ // 製品を初期化
182+ product = -1,-1,-1
183+ }
184+return
185+
186+*scan_product
187+ // 失敗フラグを初期化
188+ error_product = 0
189+
190+ if product(0)!8 : error_product = 1 // 一番下がおモチでない
191+ if product(1)!4 : error_product = 1 // 真ん中がおモチでない
192+ if product(2)=2 : error_product = 1 // カビみかんを選んだ
193+ if product(2)=3 : error_product = 1 // タコを選んだ
194+ if error_product = 0 : score += 3 // 正しく作れたらスコアアップ
195+return
196+
197+
198+*draw_product
199+ if ( product(0) > -1 ) {
200+ // 一番下の製品を描画
201+ pos scr_width/2-32,200
202+ parts_spr = product(0)
203+ gosub *draw_chr
204+ }
205+ if ( product(1) > -1 ) {
206+ // 真ん中の製品を描画
207+ pos scr_width/2-32,175
208+ parts_spr = product(1)
209+ gosub *draw_chr
210+ }
211+ if ( product(2) > -1 ) {
212+ // 一番上の製品を描画
213+ pos scr_width/2-32,150
214+ parts_spr = product(2)
215+ gosub *draw_chr
216+ }
217+
218+ return
219+
220+
221+
222+//ゲームシステム関連****************************************
223+*partsmake
224+ // 乱数取得
225+ dice=rnd(probability_max)
226+ protemp=0
227+
228+ repeat chrpattern
229+ protemp+=parts_probability(cnt)
230+ if (dice<protemp) {
231+ // 部品を引き当てたので、部品IDを設定
232+ parts_now = cnt
233+ break
234+ }
235+ loop
236+return
237+
238+
239+//描画モジュール****************************************
240+
241+*maindraw
242+
243+ //バッファのコピー
244+ gsel 0 : pos 0,0 : gmode 0 //通常描画
245+ gcopy 2 , 0 , 0 , scr_width , scr_height
246+ return
247+
248+*draw_bg
249+ //背景コピー
250+ gsel 2 : pos 0,0 : gmode 0 //通常描画
251+ gcopy 3 , 0 , 0 , scr_width , scr_height
252+ return
253+
254+*draw_chr
255+ //キャラクタコピー
256+ gsel 2 : gmode 2 //透明色付きコピー
257+ gcopy 4 , parts_x(parts_spr) , parts_y(parts_spr) , psize_x , psize_y
258+ return
259+
260+
261+