忍者ブログ

マドノマグラの初心者自作ゲーム制作日誌 迷走モード

プログラミング初心者が自作ゲームを作成してみようとする動きを記す。現在迷走中。

ブログ履歴

2010/11/06: HSP3.22の環境を整えてみる
2009/11/09: Rubyで適当版自分用関連記事リンク作成プログラムを作る
2009/06/04: Visual C++(DXライブラリ使用)の環境を整えてみるも休止状態に
2009/03/17: ActionScript勉強の環境を整えるも結局休止状態に
2006/07/15: とりあえず分岐型ゲームを作る グリーンタワーVer1.2 ダウンロード(zip)
2006/07/02: ブログスタート。NScripterで何かを作ろうとする

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

HSPで作ったじゃんけんゲーム草稿版 Ver 1.03

Ver1.02から適当にいじる。特にOP画面を作ってみたというのが大きい。あと、メッセージウィンドウ的なものは、かなり適当。




; じゃんけんゲームを作る4、ver1.02からの変更はタイトル
cls
randomize
screen 0,480,360
title "じゃんけんゲーム(基礎編) Ver.1.03"

;ver1.02からの変更点は、簡易OP画面の作成
logo = "じゃんけんゲーム"

;OP画面最初。logoの文言が画面下から上がってくる構図。
*opening_act
;文字せり上がり中にクリックすることで、*openingへ移動
onclick goto *opening
repeat 30
cls 4

font msgothic,48,1
pos 44,360-cnt*10+4
color 255,255,255
mes logo
pos 40,360-cnt*10
color 255,0,0
mes logo
wait 5

loop

;OP画面。文字がせりあがった後、固定。
*opening
;クリックでの*openingへの移動封印
onclick 0
cls 4
font msgothic,48,1
pos 44,64
color 255,255,255
mes logo
pos 40,60
color 255,0,0
mes logo

color 255,255,255
font msgothic,12,1
pos 330,330
mes "(c)2010 マドノマグラ"

objsize 200
pos 140,240
button "基礎編スタート",*start_normal
stop

*start_normal
;敵データ。テキストファイルからの読み込み準備、バッファ数値は適当
;ver1.02からの変更点は、このプログラムの位置
;チュートリアル編と、本編とに分けるときには、このnoteloadのファイルをそれぞれ変える予定。
sdim TXT_ENEMY,64

notesel TXT_ENEMY
noteload "jyanken_enemy.txt"

;データスタジオという名の、念のためのラベル
*data_studio
;ver1.02からの変更点は、ここでいったん黒でボタンデータの破棄
cls 4
;データ置き場
;自分の名前とHP。3回まで負けてよし
player_name = "プレイヤー"
player_hp = 3

;各手の使用回数、最初は1回。
p_guu = 1
p_choki = 1
p_paa = 1


;敵の番号、名前、HP、タイプ、あとは、背景色のための色指定番号
;いずれ、文字列も獲得する予定。
enemy_number = 0
enemy_name = ""
enemy_hp = 0
enemy_type = 0
enemy_red = 0
enemy_green = 0
enemy_blue = 0

;言葉置き場だけど、これが必要ないプログラムの打ち方はあるかも
j_navi = ""

;自分と敵の出した手の数値化
p_way = 0
e_way = 0

;HPデータ受け渡し用
change_hp = 0

;敵の出した手の値
enemy_mind = 0

;出した手の名前の配列化。
dim way,6
way(0) = "グー"
way(2) = "チョキ"
way(5) = "パー"

;ボタン置き場。強制的に勝ち負け誘導するボタン含む
objsize 40
color 0,0,0
pos 30,320
button "グー",*guu
pos 130,320
button "チョキ",*choki
pos 230,320
button "パー",*paa

pos 380,320
button "勝ち",*win
pos 430,320
button "負け",*lose

;ボタン一時使用不可
gosub *button_unable

;物語パート。気が向けば作る
*story_part
;ver1.02からの変更点は、新しい試合になるごとに黒から徐々に明るく画面変化
;画面全体の白地クリアのプログラムの代替
repeat 16
color cnt*17,cnt*17,cnt*17
boxf
wait 5
loop

;もし偽データ(enemy_number = 3)に勝ったら基礎編ED
;応用編の場合、ここのifはまた別のやり方を考えないといけない
if enemy_number > 3:goto *t_ending:stop

;敵の番号から、テキストファイル経由で敵のデータを読み込み、
;名前とHPとタイプ、画面上方の背景色の選択(いつか画像を入れ込むための練習ダミー)
;いずれ、文字列も獲得する予定。
notesel TXT_ENEMY
noteget S, enemy_number * 6: enemy_name = S
noteget S, enemy_number * 6 + 1: enemy_hp = int(S)
noteget S, enemy_number * 6 + 2: enemy_type = int(S)
noteget S, enemy_number * 6 + 3: enemy_red = int(S)
noteget S, enemy_number * 6 + 4: enemy_green = int(S)
noteget S, enemy_number * 6 + 5: enemy_blue = int(S)

;画面上方の背景色描画
color enemy_red,enemy_green,enemy_blue
boxf 30,50,450,180

;ver1.02からの変更点というかとりあえずのメッセージウィンドウ置き場
;のちにメッセージ表示部分は、サブルーチンと、文字配列化とループで表示かも。
*message_window
color 255,255,255
boxf 27,217,453,303
color 0,0,0
boxf 30,220,450,300

color 255,255,255
pos 35,225

mes "メッセージウィンドウ"
mes "ここに"
mes "文字を"
mes "表示します"


;アクションパートという名のジャンケンパート
*action_part

;手の使える回数比較で、ボタン使用が可能か不可能かチェック
if p_guu > 0:objenable 0,1
if p_choki > 0:objenable 1,1
if p_paa > 0:objenable 2,1
objenable 3,1
objenable 4,1

;自分と敵の名前・HPデータ部分を一時消す(白くする)ための部分
;ver1.02からの変更点は、消す位置の変更
gosub *screen_clearcolor
;自分と敵の名前・HPデータ部分を一時消す
boxf 0,0,480,50
;手の回数データを一時消す
boxf 0,320,480,360

;自分と敵の名前・HPデータ部分の書き込み
;ver1.02からの変更点は位置変更(上方へ)
pos 30,10
color 255,0,0
mes "ENEMY: " + enemy_name
change_hp = enemy_hp
gosub *HP_star

color 0,0,255
pos 300,10
mes "PLAYER: " + player_name
change_hp = player_hp
gosub *HP_star

;ボタンの横に残り使用回数表示
color 0,0,0
pos 80,320
mes "残" + p_guu + "回"
pos 180,320
mes "残" + p_choki + "回"
pos 280,320
mes "残" + p_paa + "回"

;バトル終了判定
if enemy_hp < 1:goto *win:stop
if player_hp < 1:goto *lose:stop
stop

;ボタン押した際の行動、勝ち負けボタンはプログラムの最後の方
*guu
p_way = 0
p_guu -= 1
goto *enemy_turn
*choki
p_way = 2
p_choki -= 1
goto *enemy_turn
*paa
p_way = 5
p_paa -= 1
goto *enemy_turn

;敵の出す手の判断。
*enemy_turn
;一時的にボタン不可
gosub *button_unable

;ランダムで得た数値の余りの数を見る。今回は0-35を6で割ったときの余りを考える
enemy_mind = rnd(36) \ 6

;各敵タイプ(enemy_type)により、余りの数から、どの手を出す処理にするか考える。
;現状のチュートリアルキャラでは、上のランダム数値は全く関係しない。
switch enemy_type
;石:グーのみ
case 1
e_way = 0
swbreak
;鋏:チョキのみ
case 2
e_way = 2
swbreak
;紙:パーのみ
case 3
e_way = 5
swbreak
default
e_way = p_way
swbreak
swend

;敵が出した手は、自分の手の回数増加として計算完了させるためのスイッチ
switch e_way
case 0
p_guu += 1
swbreak
case 2
p_choki += 1
swbreak
case 5
p_paa += 1
swbreak
default
;ここは入って来るわけがないゾーン
e_way = p_way
swbreak
swend

;文字消し
;ver1.02からの変更点は位置変更、攻撃表示の背景は白、文字表示ウィンドウは黒化
color 255,255,255
boxf 0,181,480,216
color 0,0,0
boxf 30,220,450,300

;互いに出した手に対しての文字表示
pos 300,190
color 0,0,255
mes way(p_way) + "で攻撃!"
pos 35,190
color 255,0,0
mes way(e_way) + "で攻撃!"
wait 50
;引き分けなら先の行へ飛ばしてから、勝ち負けの判定。
;引き分け
color 255,255,255
pos 35,225
if p_way == e_way{
mes "双方とも攻撃に耐えた"
goto *learning_part
}
;プレイヤーの勝ち elseは負け
;勝てば敵のHP減少、負ければ自分のHP減少、else負けにしたのは、文字が長くなるのが面倒くさいため。
if (((p_way == 0)&(e_way == 2))|((p_way == 2)&(e_way == 5))|((p_way == 5)&(e_way == 0))){
j_navi = player_name
enemy_hp -= 1
}
else{
j_navi = enemy_name
player_hp -= 1
}

mes j_navi + "の攻撃が通った!"

;敵が出した手をラーニングしたことの表示
*learning_part
wait 50
mes ""
mes enemy_name + "が繰り出した" + way(e_way) + "を吸収した!"

goto *action_part
stop

;勝ち負け結果
;勝った場合、ボタン使用不可、勝利の文字を表示、敵番号増加、敵データ読み出しへ戻る
*win
gosub *button_unable
wait 80
pos 330,320
color 0,0,255
mes "勝利"
enemy_number++
wait 80
goto *story_part
stop
;負けた場合、ボタン使用不可、敗北の文字を出してエンド、閉じる
;ver 1.02からの変更。負けた後は*opening_actに戻る
*lose
gosub *button_unable
wait 80
pos 330,320
color 255,0,0
mes "敗北"
wait 50
goto *opening_act
stop

;サブルーチン:一時ボタン使用不可
*button_unable
objenable 0,0
objenable 1,0
objenable 2,0
objenable 3,0
objenable 4,0
return

;サブルーチン:文字消し色設定(白)
*screen_clearcolor
color 255,255,255
return

;サブルーチン:HP表示の★化、change_hpで受け取った数値だけ★表示
*HP_star
;ローカル関数の概念があるのかどうかしらんがとりあえずstarが★文字代数ね。
star = ""
repeat change_hp
star = star + "★"
loop
mes "HP:" + star
return

;チュートリアル分のエンディング仮
*t_ending
cls
pos 30,100
mes "チュートリアルはここまで!おめでとう!"
stop
end
PR

この記事にコメントする

NAME
TITLE
MAIL
URL
COMMENT
PASS

この記事へのトラックバック

この記事にトラックバックする:

PR

カテゴリー

最新記事

アーカイブ

プロフィール

HN:
マドノマグラ
性別:
非公開
職業:
趣味:
駄文書き
自己紹介:
ゲームを作ろうとしているうちに、言語学習に飽きていく。典型的なダメな人パターンに陥るアホな人

リンク

ブログ内検索

バーコード

RSS

忍者ブログ │ [PR]