~ ゲーム画面に背景(はいけい)を出そう ~
前回作ったゲーム土台の説明
学芸会や発表会の舞台(ぶたい)を思い出してください。役(やく)を演じる人や裏方(うらかた)さんが色々なことをして劇ができます。ゲームも劇を作るのににています。
# この下にコードを入力しよう require 'gosu'
Rubyでゲームを簡単に作ることができるようにあらかじめ用意された、 gosu (ゴス)という命令の集まりが必要なので、準備してください。
require (リクワイア)は日本語で「必要とします」という意味です。
「劇(ゲーム)作りが得意なgosuさんを連れてきてください」と、いうのに似ています。
class MyGame < Gosu::Window
あらかじめ用意された命令のあつまりgosuのなかのWindow(ウインドウ|画面にでる四角いゲーム画面)を使って、自分だけのゲームを作れるように準備してください。そのゲームはMyGame(マイゲーム|私のゲーム)という名前にしてください。
「gosuさん、一緒にMyGameという劇の準備をしましょうね」と、いうのに似ています。
def initialize super(400, 500, false) end
def(デフ)はdefine(デファイン|はっきりと決める)を短くした命令です。 initialize(イニシャライズ)は「最初にやることをやる」という意味です。
def initialize で、最初によることをはっきり決めるという意味になります。def initializeからendの間に、最初にやることを書きます。
super(スーパー)は、gosuに「最初にやるべきことをやってください」と、命令をするときに使います。gosuが最初にやることはゲーム画面を出すことやゲームを動かすのに必要なことの準備と、あらかじめ決められています。
400,500は、画面の縦横の大きさです。単位はピクセルです。ピクセルはコンピューターの画面の小さな点の1つです。400ピクセルは小さな点400個分の大きさです。
false (フォルス)は、「正しくない」という意味です。ここにfalseを入れると、コンピューター全体の画面をひとりじめしないようにすることができます。
「gosuさん、舞台の大きさは縦400 横500にしますよ。他に劇をやるのに必要なものは用意しておいてくださいね。」と、いうのに似ています。
def update end
次回以降説明します。
def draw end
後で説明します。
end
MyGameの end (終わり)です。
window = MyGame.new window.show
あらかじめMyGameという名前で準備しておいたゲーム画面を、windowという名前で作って、コンピューターの画面に出してください。
「gosuさんと準備した劇MyGameをwindowという名前でやりましょう。MyGame window公演 スタート!」と、いうのに似ています。
ゲームの背景(はいけい)をだしてみよう
あらかじめ、背景として出したい写真や絵をKidsRubyをインストールしたフォルダのgosuというフォルダに準備しておきます。ここでは、kesiki.pngとう写真がgosuフォルダいれてある場合を説明します。
def initializeとendの間に命令を追加します。
def initialize super(400, 500, false) @haikei = Gosu::Image.new(self, "gosu/kesiki.png", true) end
最初にやる def initializeで写真を準備します。
「gosuさん、舞台にいつでも出せるように、背景を持った背景係さんを用意しましょう。背景係さんは@haikeiという名前にしましょう」と、いうのに似ています。
そして、def drawとendの間に命令を追加します。
def draw @haikei.draw(0,0,0) end
def drawとendの間には、画面にゲームで使う絵をコンピューターの画面に描くためにgosuにする命令を書きます。
「gosuさん、背景係さんに画面に出てもらいましょう」と、いうのににています。
「動かす」ボタンをクリックしてみましょう。背景がゲーム画面に出ましたね。
呪文のようにむつかしい命令が出てきましたね。でもまずは、コンピューターの中にいるgosuさんと一緒に用意した背景係さんを想像しながら、いろいろな写真を背景で出してみてください。
おわり
Background image of the sample game: CC BY 2.0 By Perrimoon http://www.flickr.com/photos/18614695@N00/3759365910)