2017年06月29日

[Windows用(HSP)]メビウス2000

【投稿者:びぃちゃ】

[はじめに]
1983年9月号のベーマガに掲載されていた、「メビウス」をWindowsにアレンジ移植してみました。
ただよけるだけでは面白くないので、フラッグを取る要素もつけています。

[操作方法]
カーソルキーで戦闘機を動かして、トーロイド『もどき』、バキュラ『もどき』、そしてガルバーラ『もどき』をよけていきます。
スコアは自動で上がっていきますが、画面の上にいるほど上がり方が速いです。
途中で現れるスペシャルフラッグ『もどき』はボーナス点です。連続してとるほど、ボーナスが大きくなります。
トーロイド『もどき』、バキュラ『もどき』、ガルバーラ『もどき』にぶつかるとゲームオーバーです。

[その他]
難しいところは特にありませんでした。しいて言えば、キャラクター作り、でしょうか。
それと、できればゼビ●スのようなBGMも入れたかったです。

[使用素材]
・ポケットサウンド 様
・Sense's Circuit 様
----------
bm170629-01.JPG
----------
メビウス2000のソースファイル
----------
このプログラムに使われている素材の著作権は、その素材の作者様にあります。
このプログラムに使われている素材の二次使用を禁じます。
posted by 裏編 at 09:07| Comment(0) | 投稿プログラムコーナー | このブログの読者になる | 更新情報をチェックする

2017年06月28日

プログラムの投稿について

プログラムを投稿するさいは、
・プログラムのソースファイル(プログラムリスト、画像や音声)
・プログラムの実行ファイル(拡張子がEXEのファイル)
を圧縮し、メールに添付して、

bmaga0628@yahoo.co.jp

まで送信してください。
(このとき、圧縮ファイルのウイルスチェックをやっておいてください)

またメール本文には、
・投稿者名(ハンドルネームでかまいません)
・使用言語
(旧機種用の場合には、機種と言語やモードなど)
・プログラムの説明(実行方法や操作方法など)
・プログラムについて苦労した点や、工夫した点
・参考にしたものがあれば、その参考にしたもの
を記述してください。

皆さまの投稿をお待ちしております!
posted by 裏編 at 12:33| Comment(0) | ご案内 | このブログの読者になる | 更新情報をチェックする

2017年06月22日

HSPでプログラミング~第3回・キャラクターを動かしてみよう

~変数についてちょっと~
さて、今回はキャラクターを動かすことをやってみますが、その前に変数について簡単に説明しておきましょう。
よく言われていることですが、変数とは簡単に言えば、数や文字列を入れることのできる箱です。

変数に何かを入れる方法ですが、次のように書きます。

変数名=数または文字列

試しに次のプログラムを入力してみてください。

a=5
mes a

どうでしょう?ウィンドウの左上隅に、5と表示されましたか?
mes命令は、文字列や数を表示させる命令ですが、このように変数名を指定すると、その変数の中身を表示させることができるのです。
そして何よりも、aという変数に5が入ったこと。これが一番重要です。

~動かしてみよう~
さて、いよいよキャラクターを動かす話にうつりますが、ここでこの変数を使います。
どのように使うかですが、試しに次のプログラムを入力して、実行してみてください。

x=100
y=70
pos x, y
mes "A"

左上隅ではなく、そこから右下のほうにAが表示されましたね。
今度は、1行目を、
x=150
に変えてみましょう。今度はさっきの位置から右に表示されました。

このように、pos命令には変数を指定することもできるのです。その場合、表示位置は変数の中に入っている数に設定されるのです。(この例では、xに100、yに70が入っているので、左上から右に100ドット、下に70ドットの位置に設定される)

さて、それを踏まえたうえで、前回のプログラムを改造してみましょう。

buffer 0
pos 0, 0
picload "mychara.bmp", 1

screen 1, 640, 480

x=0
y=240

repeat
boxf 0, 0, 640, 480
pos x, y
gcopy 0, 0, 0, 32, 32
x=x+32
if x>600:break
await 300
loop

このプログラムのポイントは、12行目のpos命令と、14~15行目です。
12行目では、変数xとyを使って、キャラクターを表示する位置を設定しています。
そして14行目では、xの値に32を足して、次に表示させる位置を右にずらし、15行目で、xが600より大きくなったら、break命令を使って、ループから抜け出させてします。(break命令を実行すると、repeat~loopの繰り返しから抜け出して、loopの直後の命令を実行します)

では実行してみましょう。どうですか?キャラクターが画面の左から右に移動していたら成功です。

最後に、今回のプログラムの流れを簡単に説明するとこうなります。

(1)変数xとyに、キャラクターのスタート位置の横の位置、縦の位置を入れる。
(2)画面を黒で塗りつぶす
(3)変数xとyの数が示す位置に、表示位置を設定
(4)設定された位置にキャラクターを表示
(5)変数xの値を増やす=次に表示する位置を右にずらす
(6)変数x(横の位置)が600より大きくなったら、繰り返しを抜ける
(7)(2)に戻る

次回は、キー入力でキャラクターを動かすことをやってみようと思います。
posted by 裏編 at 19:24| Comment(0) | HSPでプログラミング | このブログの読者になる | 更新情報をチェックする

2017年06月13日

スマホでナンプレ!

マス目に数字を埋めていくナンプレ。頭の体操に良いパズルです。
なんといっても、問題集と鉛筆さえあればできるというのがいいところです。最近では、簡単に持ち運べる大きさの問題集や、ナンプレを専門に扱うパズル雑誌も出てきてますよね。
 さてさて。とはいっても、鉛筆ですると問題集が汚くなってしまうのがちょっと困りものです。でも大丈夫です!スマホ全盛のこの時代。スマホでナンプレができるアプリも存在するのです!
 しかも、そのアプリは、色々な機能がついていたりするので、より解きやすくなっていたりも。
 この記事では、そんなナンプレのアプリを2本ほど紹介していこうと思います。

●ナンプレに必要な機能は?
 さて、その前にナンプレのアプリにあるといい機能とはなんでしょうか?
 一番重要なのは、数字の仮置き機能。正式な回答とは別に、複数の数字を一つのマスに書ける機能です。紙の問題集でやってたときも思ったのですが、仮置きをするのとしないのとでは、解きやすさが格段に違います。例えば、そのますに入る数字の候補を書いておいたり。
 あとは、やはりやり直し機能なんかもあるといいですよね。

●無限ナンプレ
最初に紹介するのは、Seventh Rank さんが開発した、無限ナンプレです。このアプリの一番の特徴は、まさに「無限」です。
無限ナンプレには、最初から5つあるレベルのそれぞれに50問ずつ、計250問の問題が収録されているのですが、なんと!ボタンを押すだけで、新しい問題を自動作成する機能がついています。まさに、無限に問題を作り、楽しむことができるのです。もちろん、問題のレベルを選ぶこともできます。
とかようになかなかな機能のナンプレアプリなのですが、
・簡単レベルなのに、ちょっと難しい問題があることがある
・3x3ブロックの枠が、他の線と同じなので、ちょっと見にくい
などが難点です。ですが、十分に楽しめるナンプレアプリだと思います。

●ナンプレレッド、ナンプレパープル、ナンプレグリーン、ナンプレオレンジ
 次に紹介するナンプレアプリは、Schop Factoryさんの開発された、ナンプレ(レッド、パープル、グリーン、オレンジ)です。
 これは、無限ナンプレのように、問題の自作機能はありませんが、ブロックの枠が太くて見やすかったり、同じ数字を色つきで示してくれるなど、さりげなく使いやすい機能があるのが嬉しいところです。そこまでの全ての問題を解くことで、スペシャル問題をプレイできるようになるところも、プレイ意欲をかきたててくれるニクいポイントです。

●どっちがいいの?
さて、どちらがいいのかですが、これは難しいところです。両方ともプレイしやすく面白いアプリですから。
しいて言うなら、プレイスタイルや、何を重視するかによるでしょう。
とにかく、たくさんの問題を解きたいのなら、無限ナンプレ。問題数よりプレイしやすさをとるなら、ナンプレ(レッド、パープル、グリーン、オレンジ)といったところでしょうか。

 唯一つ言えることは、今回紹介した二つは、いずれも筆者がイチオシのおもしろナンプレアプリで、プレイして損はないということです!(得しなかったぞ!という苦情はご遠慮ください(笑))
 もちろん、この二つの他にも、色々なナンプレアプリもあるので、そちらにも手を出してみるのもいいかもしれませんよ。

 みなさんも、スマホでナンプレをプレイし、頭のエクササイズをしてみてはいかがでしょうか?
posted by 裏編 at 12:00| Comment(0) | その他のゲーム情報 | このブログの読者になる | 更新情報をチェックする

2017年06月08日

HSPでプログラミング~第2回・プログラムの中を見てみよう!

~プログラムの中身を見てみよう~

さて、ではプログラムを解説していきましょう。
できる限りわかりやすく説明するつもりですので、よろしくお願いします。

buffer 0

この命令は、目に見えないウィンドウを作るものです。
『そんなものを何に使うんだ?』と思われると思いますが、ここにキャラクターの絵を読み込み、そこから実際のウィンドウに転送するようにしてやるのです。そうすると、実際のウィンドウに直接読み込むより、いくらか速度が速くなります。
また、この方法では色々と便利なことができるのでお勧めです。

pos 0, 0

この命令は、この直後に文字や絵を描く命令を実行したときに、描く位置を指定するものです。
つまりここでは、『次に何かを描くときは、(0, 0)の位置に描いてください』と指示しているわけです。
さて、その位置ですが、画面左上からのドット数で、(右に何ドット, 下に何ドット)という形で指定します。

例えば
pos 3,5
であれば、『画面左上から、右に3ドット、下に5ドット』の意味になります。
試しに、プログラムの二行目を、
pos 30, 50
に変えて実行してみてください。キャラクターが右下にずれましたね。

さて、次に進みましょう。

picload "mychara.bmp", 1

これは、現在操作対象となっているウィンドウに、画像ファイルを読み込む命令です。
ダブルクォーテーションで囲まれているのは、読み込むファイルの名前、そしてコンマのあとは、どのように読み込むかを表しています。0にすると、ウィンドウが読み込んだ画像のサイズに合わされます。1にすると、ウィンドウの大きさを変えずにそのままの大きさで画像を読み込みます。2は0と同じですが、こちらはウィンドウの中を黒で塗りつぶしたうえで、画像の大きさにウィンドウを調整したうえで読み込まれます。
1枚の画像を読み込む場合は0や2でもいいですが、1つのウィンドウに複数の画像を読み込む場合は、1にしたほうがいいでしょう。

screen 1, 640, 480

この命令は、『表示される』ウィンドウを作る命令です。
最初の数字は、そのウィンドウにつけられる番号。2番目は横幅、3番目は縦幅を表します。(これは先のbuffer命令も同じです)
2番目と3番目の数字は省略することもできます。その場合は、横幅640ドット、縦幅480ドットのウィンドウが作られます。
これ以外にも、4番目以降に指定できる数字はあるのですが、1~3番目だけで基本的なことはできるので、ここでは省略します。

さぁ、ここからが本番です。

~さぁ本番だ~
repeat
loop
この二つの命令は、間に挟まれている命令を繰り返すものです。
repeatの後に、repeat 5というように数字をつけると、その回数だけ繰り返すのですが、この回数を省くと、えんえんとずっと繰り返すようになります。

さて、その繰り返す命令の中身ですが……。

boxf 0, 0, 640, 480

boxfはBox Fillの略で、指定された大きさの、塗りつぶされた四角形を描く命令です。
大きさについてですが、最初の数字と二番目の数字が、その四角形の左上の座標、三番目と四番目の数字が右下の座標を表します。また、先ほどのpos命令と同じように、最初の数字と三番目の数字が、ウィンドウの左上から右に何ドットか、二番目と四番目の数字が、ウィンドウの左上から下に何ドットかを表しています。

つまりこの命令では、『画面の左上から右に0ドット、下に0ドットの地点から、右に640ドット、下に480ドットの地点までの塗りつぶされた四角形を描きなさい』と言っているわけです。

color命令を事前に指定しない場合は、黒で塗りつぶしますが、color命令で指定されている場合は、その色で塗りつぶします。

ここで、color命令にも触れておきましょう。color命令を実行すると、その後に実行された文字や絵を描く命令では、その色で描かれるようになります。
さて、color文の書き方は……

color 赤, 緑, 青

赤、緑、青はそれぞれの色の明るさを、0~255の範囲で指定します。

それでは次です。

gcopy 0, 0, 0, 32, 32

gcopy命令は、最初のほうで言った、『ある画面から別の画面に、画像の一部を転送する』命令です。
まず最初の数字は、転送する画像のあるウィンドウの番号を指定します。上の例であれば、ウィンドウ番号0のウィンドウから転送することを表します。
二番目と三番目の数字は、転送する範囲の左上の位置を表します。pos命令と同じく、二番目が、左上から右に何ドットとか、三番目が、左上から下に何ドットか、を表します。
そして四番目と五番目の数字は、転送する範囲の右下の位置を表します。ここの表し方も、二番目、三番目と同じで、左上から右に何ドット、下に何ドットとなります。
つまり、この命令は、『0番のウィンドウの、(左上から右に0ドット、下に0ドット)から(左上から右に32ドット、下に32ドット)の範囲を転送しなさい』となるわけです。

そうそう、描画や操作をするウィンドウについても説明しておきましょう。
screenやbufferで新しくウィンドウを作った場合、そのウィンドウが描画や操作する命令の対象となります。
でも、違う命令に描画を行いたい場合もありますよね。そのときは、この命令の出番です。

gsel ウィンドウ番号

これを実行すると、指定したウィンドウを対象に切り替えることができます。
またこの命令には、ウィンドウ番号の後にもう一つ数字を付け加えることができます。(その場合、ウィンドウ番号の後に、コンマをつけることを忘れずに!)
数字を付け加えた場合……
その数字が-1ならそのウィンドウを見えなくします。
1ならそのウィンドウをアクティブにします。
そして2なら、アクティブにしたうえで、さらにそのウィンドウをずっと最前面にすることができるのです。

そして最後。

await 10

これはこのプログラムで、さりげなくも重要な部分です。
awaitの後に書かれた数字の時間だけ、プログラムの実行を中止します。
『それが何の役に立つの?』と思われるのですが、百聞は一見に如かず。
このawait 10を消して、実行してみてください。

どうでしょうか? そのウィンドウをドラッグすることもできなくなりましたし、×ボタンを押して終了させることもできなくなりましたね。何度も×ボタンを押して、強制終了させるしかなくなってしまったではないでしょうか。
このawait命令は、そうならないようにするおまじないのような命令なのです。(実際には少し違いますが)

さて、次回は、このキャラクターを移動させてみようと思います。お楽しみに!
posted by 裏編 at 10:39| Comment(0) | HSPでプログラミング | このブログの読者になる | 更新情報をチェックする