SQLの窓

2015年04月20日


Small Basic。やはり基本はゲーム作って楽しむべきなので、キーを押したらボールを発射する雛形



Microsoft Small Basic 1.1 の使い方

Microsoft からダウンロードしてインストールすると、誰でもすぐ使えるプログラミング環境です。上記リンク先内で基本部分のチュートリアルはまとめましたが、いざゲームを作るとなるといくつか注意事項があります。

画面の大きさ

これは、画像を使ってサイズ決定するようにしました。そして、画像に非透過度を設定して薄くしています。好みでいろいろな背景を設定すると同時に、サイズを指定する事になります。

ループ処理

結果的には、Goto 文で単純ループを作成しています。Program.Delay(1) は、ループ処理を安定させる為のおまじないだと思って下さい。永久ループではありますが、CPU 負荷は殆ど無く、イベント割り込みも何も問題なく動作しています。

最初、タイマーも試したのですが表示にちらつきが出た上にいろいろ弊害があるようでした。ゲーム作る場合に使う事を想定して実装されているタイマーでは無いようでした。

オブジェクト らしく

ボールを移動させるのに、サブルーチンが必要ですが、Small Basic ではそれしか無いので、サブルーチン定義の上部に初期処理を記述しています。その部分がコンストラクタみたいなものだと思って下さい。
'  ウィンドウの背景色
GraphicsWindow.BackgroundColor = "White"
'  ウインドウの位置
GraphicsWindow.Left = 100
GraphicsWindow.Top = 40
'  リサイズできないようにする
GraphicsWindow.CanResize = 0

LoadImage_Url = "https://lh5.googleusercontent.com/-3IWAlBbUSYs/VLgFjekftnI/AAAAAAAAYKw/VM5FI7bYNzw/s800/142133580685821985693.jpeg"
LoadImage_Opacity = 50
LoadImage()

' ******************************************
' 白いボール
' ******************************************
GraphicsWindow.BrushColor = "#123456"   ' ボールの塗りつぶし色
Ball_Speed = 1
Ball_Size = 30
Ball_Name = Shapes.AddEllipse(Ball_Size, Ball_Size)
Ball_x = LoadImage_width / 2
Ball_y = Ball_Size * -1
Shapes.Move( Ball_Name, Ball_x, Ball_y )
Sub Ball

  Ball_y = Ball_y - Ball_Speed
  If Ball_y > (Ball_Size * -2) Then
    Shapes.Move( Ball_Name, Ball_x, Ball_y )
    ' TextWindow.WriteLine(Ball_y)    
  Else
    Ball_y = Ball_Size * -1
  EndIf
  
EndSub

' ******************************************
' キーイベント
' ******************************************
GraphicsWindow.KeyDown = OnKeyDown
Sub OnKeyDown
  
  If Ball_y <= (Ball_Size * -1) Then
    Ball_y = LoadImage_height
  EndIf
  
EndSub

' ******************************************
' アニメーションループ
' ******************************************
Loop:  
  Program.Delay(1)
  Ball()
Goto Loop


' ******************************************
' グラフィックウインドウに画像を表示する
' LoadImage_Url : URL
' LoadImage_Opacity : 不透明度
' ******************************************
Sub LoadImage
 
  LoadImage_pic = ImageList.LoadImage(LoadImage_Url)
  LoadImage_img = Shapes.AddImage(LoadImage_pic)
  Shapes.SetOpacity(LoadImage_img, LoadImage_Opacity)
  LoadImage_width = ImageList.GetWidthOfImage(LoadImage_pic)
  LoadImage_height = ImageList.GetHeightOfImage(LoadImage_pic)
  GraphicsWindow.Width = LoadImage_width
  GraphicsWindow.Height = LoadImage_height
  GraphicsWindow.DrawResizedImage(LoadImage_img, 0, 0, LoadImage_width, LoadImage_height)

EndSub

移動処理の概要

初期処理で画面の外にボールを移動しています。その状態で何かキーを押した時のみボールを画面の一番下の中央に移動させます。後は、画面の外に出るまで移動させますが、画面の外に出た場合は変数としては初期値につねに設定されて事実上ボールには何も起こりません。

ボールの移動中は、キーが押されてもキーが押してボールを発射できるのは画面の外に出ている場合だけなので、画面内にボールが表示されている時にキーを押しても反応しません。

結果的に一つのボールに対して、Ball というサブルーチンが一つ対応しており、Ball_ と言う変数で全てまかなっているオブジェクトのようなものだと思って下さい。

この後、ボールを増やしたり他のオブジェクトを増やしていってレスポンスがどうなるかは解りませんが、簡単なゲームならすぐ作れると思います。



タグ:Small Basic
【Small Basicの最新記事】
posted by lightbox at 2015-04-20 18:37 | Small Basic | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり