マドノマグラの初心者自作ゲーム制作日誌 迷走モード
プログラミング初心者が自作ゲームを作成してみようとする動きを記す。現在迷走中。
ブログ履歴
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で何かを作ろうとする
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ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
とりあえず壁の移動まで どうくつ探検ゲームを MyGame で作成する作戦
何かゲームを作ろうと考えてみた。すると手元にあったのが、12歳からはじめるHSPわくわくゲームプログラミング教室(ただし私が持っていたのは 3.0)。そこに載っていた、どうくつ探検ゲームを、MyGame を利用して作ってみることにした。
とりあえず、ある決まった高さの上下の壁が右から左にスクロールしていくというところまで作ってみた。
12歳からはじめるHSPわくわくゲームプログラミング教室では、gcopy をつかって、1ドットずつずらしていく手法を使っていた。
でも、MyGame 的にはどうやればいいのかさっぱりわからんので、思い切って、上壁の配列と下壁の配列をそれぞれ、横のドット分(480個!)作って、各配列の位置が、x 座標:0より下になったときに、その配列を、ある高さの壁にして、x 座標:479 から登場させることにした。
多分、これだと処理が遅くなるんだろうけど、そんなの知ったこっちゃない。これをダックタイピングと呼ぶのかどうかは知らんが、もうこれでいいじゃないかと。
MyGame.create_screen 480, 360
は、ウィンドウの大きさ(横幅、縦幅)の指定文
この場合は、480×360のウィンドウを作っちゃえっていうこと。
SDL::WM.set_caption("In The Cave /(c)2008 MDN Lab. ", "")
は、タイトルバーに出る文字とアイコンの指定文
ちなみに、日本語を使おうとしたら、文字化けしたのでとりあえずアルファベットを使うことで茶を濁した。
MyGame.background_color = [0,0,0]
は、そのまんま背景色指定、クロですね。
add_event(:key_down) { go_next_scene }
は、キーが押されたら、go_next_scene の処理をしなさいということ
MyGame::Square.new(479, 259, 0, 100, :color => [255, 255, 255])
は、四角形を作るという指定
この場合は、x=479 y=259 を頂点にして、横幅 0(実質1)、縦幅 100 (多分実質101)の白の四角形を作っちゃいなよということ…だと思う。
@upper[i].render
は、@upper[i] で指定されている図を描いちゃいなよということ。
self.next_scene = TitleScene
は、シーンの切り替えをやってしまえということ。
この場合は、TitleScene というクラスの場面にいっちゃえっていうこと。
caveflying0.rb
require 'mygame/boot'
class CaveFlying < Scene::Base
def init
MyGame.create_screen 480, 360
SDL::WM.set_caption("In The Cave /(c)2008 MDN Lab. ", "")
MyGame.background_color = [0,0,0]
@upper = []
@bottom = []
(0..479).each do |u|
@upper[u] = MyGame::Square.new(u, 0, 0, 0, :color => [255, 255, 255])
@bottom[u] = MyGame::Square.new(u, 359, 0, 0, :color => [255, 255, 255])
end
add_event(:key_down) { go_next_scene }
add_event(:mouse_button_down) { go_next_scene }
end
def render
(0..479).each do |i|
@upper[i].render
@bottom[i].render
end
end
def go_next_scene
self.next_scene = TitleScene
end
def update
(0..479).each do |i|
@upper[i].x -= 1
@bottom[i].x -= 1
if @upper[i].x < 0
@upper[i] = MyGame::Square.new(479, 0, 0, 100, :color => [255, 255, 255])
@bottom[i] = MyGame::Square.new(479, 259, 0, 100, :color => [255, 255, 255])
end
end
end
end
class TitleScene < Scene::Base
end
Scene.main_loop CaveFlying
PR
この記事にコメントする
PR
カテゴリー
最新記事
(04/22)
(11/20)
(11/11)
(11/11)
(11/09)
(11/07)
(11/07)
(11/07)
(11/07)
(11/06)
アーカイブ
プロフィール
HN:
マドノマグラ
HP:
性別:
非公開
職業:
謎
趣味:
駄文書き
自己紹介:
ゲームを作ろうとしているうちに、言語学習に飽きていく。典型的なダメな人パターンに陥るアホな人