2019年01月28日

NIKO NICO CINEMA!~もう過ぎましたが……お正月特集

やってきました新年、そしてお正月! みなさんはどんなお正月を過ごされましたでしょうか?
今回は、「もう一度正月気分に浸れる動画」ということで、「お正月」、「おもち」、「おせち」で検索してヒットした動画を紹介していこうと思います。どうぞお楽しみください。

ではまずは、「お正月」から~

~懐かCM 1992年 お正月 その1~


1992年のお正月に流れていたCMを集めたものだそうです。
さすがに15年以上も前のCMを見ると、懐かしさいっぱいですよね。
もう、これだけで突っ込みはOK、みたいな感じです。
このほかにも、「その2」、「その3」とシリーズがあるので、全部通してみてみるのも面白いかと思いますよ。

では次、「おもち」です。

~本気でお餅生活30日やってみた。~



・お餅を使った料理を作成し、30日間食べ続けること
・休まないこと
・同じ料理を作らないこと
・副菜(サラダ等)をつけるのはOK ←栄養的にツライのでw
というルールのもと、動画の主が真剣にお餅生活にチャレンジした様子をつづったドラマです。
「やってみた」、「作ってみた」関係の動画を見るたびに思うですが、動画主の方々の努力と根性とチャレンジ精神には、本当に感心します。
この動画も、それがいっぱい詰まった、見ごたえのある動画です。

……なお、この後、動画主さんは、1kgのリバウンドをしてしまったそうです。 ご愁傷様(^^;

~グルジア軍の侵攻から一年後のツヒンヴァリ(2009/8/8)~



「おせち」で検索したところ、なぜか大半がグルジアと南オセチア(そしてロシア)に関する動画ばかりでした・・・。
この三国とおせち、いったいどんな関係があるのでしょうか・・・?
でも、出てきたので載せてみました。
この動画を見ながら、世界平和について考えるのもいいかもしれませんね。

~最後に~

今月の『NIKONIKO-CINEMA』はどうでしたか?
一部、どう見てもお正月とは関係ない動画もありましたが、これらの動画を見て、お正月を楽しんでくれたら幸いです。
……あ、でもこの一月号が公開されたころには、もう正月は終わってるんですよね。フガクク(某国民的主婦的)

次回もまた、楽しい動画をそろえて、皆様をお迎えしていこうと思います。
どうぞお楽しみに~。

それでは改めまして~。フガクク(某国民的主婦的



※次の更新は、2月4日。『プログラミングの掟!』の予定です。お楽しみに!
posted by 裏編 at 11:19| PCメディア情報 | 更新情報をチェックする

2019年01月24日

フリーゲームレビュー:Vectorがおススメ! ロックオンで敵を殲滅! 『ボムマン・ザ・シューティング』

fr-1901-00.JPG

 色々なフリーソフトヤシェアウェアが配布されているダウンロードサイト、『Vector』。このサイトには、Vectorおススメのソフトを紹介するコーナーがあったりします。
 そこで今回は、そこで紹介されている中から、面白そうと思ったものを一つレビューしてみることにしました。
 今回のお題は、『ボムマン・ザ・シューティング』です。

~どんなゲーム?~
 このゲームは、いたってシンプル。こちらに接近してきたり、攻撃してきたりする敵をショットやロックオンで倒していくというものです。
 その最大の特徴は、なんといってもロックオンでしょう。
 ロックオンのボタンを押すと、自機を中心に、ロックオン範囲が広がっていき、その中に入った敵を次々とロックオンしていきます。

fr-1901-01.JPG
▲ ロックオン範囲が広がっていき、範囲にいる敵を次々とロックオンしていく

 そしてボタンを離すと、ショットが発射され、ロックオンした敵を次々と撃破していってくれるのです。これはとても爽快ですよ!
 ただし、ロックオンは弱いので、ボス敵などの固い敵に対しては、連射のできるショットで攻撃する必要があります。

~爽快!~
 このゲームの面白さはズバリ、敵を倒していく爽快感でしょう。このゲームでは、色々な陣形を組んで敵が大量に攻めてきたりするのですが、そんな敵もロックオンを使えば一掃できます。この爽快感が一番のキモです!

fr-1901-02.JPG
▲ このぐらいの敵はまだまだ序の口。 でも大量の敵もロックオンを使えば一掃!

 でもそれだけでなく、先ほど説明したとおり、硬い敵にはショットで攻撃する必要があるなど、攻撃を使い分けるなど戦略的なポイントもあり、なかなか奥深いと思います。

 この爽快感と戦略性がミックスされたナイスな『ボムマン・ザ・シューティング』。ぜひプレイしてみませんか?
 きっと熱くなれる一本ですよ。
posted by 裏編 at 14:22| その他のゲーム情報 | 更新情報をチェックする

2019年01月21日

プチコンゲームプログラミング講座~第三回「コマンド入力ゲームを作ろう」

文 プチ太郎 氏
=-=-=-=-=-=-=-=-=-=-
最初の三回がみんな、ボタンを押して進むプログラムだったので、ちょっと講座の速度が遅くなっちゃったかな。無理しない程度に、ペースを上げて行きましょう。
 反射神経にたよるプログラムが続いたので、ここでもう一つのTVゲームの代表格である、入力するまでコンピュータが待ち続けてくれるゲーム、つまり「コマンド入力ゲーム」を作ってみましょう。代表作にはシミュレーションゲーム(スタートレック、シムシティなど)やロールプレイングゲーム(ドラクエ、プチコンのGAME2など)がありますが、今回はアドベンチャーゲーム(以下、略す場合ADV)で行くことにしました。
 ADVと言っても、当初は「サガセ ココ」と入力したり、コマンド入力式になっても「みる」「うごかす」「なぐる」とコマンドが多かったり、遊びにくいものでした。しかし、今の場面から2~3の項目どれかを選択すれば、木の枝のように展開が分かれていって、バッドエンドやグッドエンドがある…というものなら、かなり簡単です。ADVではないが近年のゲームでは、「アイドルマスター」がこれでしたね。
 ここではRPGやギャルゲー、特に最近ソーシャルゲームで目にする機会も多い、キャラクターやメッセージが出る会話システムのサンプルゲームを紹介し、プログラムを見ていきましょう。
教材プログラム 3 「ミニアドベンチャーゲーム」(ファイル名「KOZA03」)

koz03_s1.jpg

★ ゲームの内容と説明 ★
 あなたは、手に入れればプログラミングが上手くなるという、伝説の宝石「プチコン」を探して、このスマイルブームの町に来た。町にはいろんな人も住んでいるが、モンスターもいるという。無事にプチコンをゲット出来るだろうか?
 先ほども話した通り、2~3のコマンドを選んでグッドエンドを目指すゲームです。また選ぶだけではつまらないので、誰かに会ったり中間目的のアイテムを入手したかなどの、いわゆる「フラグ」も使っています。
 ADVの進み方にもいろいろありますが、今回はスタート地点から枝分かれに進むという簡単なルートにしました。しかしいつかは奥まで行きつきます。一方通行で進めないと、ハマってラストまで行けない可能性があるので、一部を除きバック出来る様にしています。
 今回から急に270行以上の量となり、驚いた方もいると思いますが、ADVという事で、過半数がそれぞれの場面の会話に使われているだけです。実際にリストを見ると、同じような処理ばかり並んでいるのが判ります。
 なおBGMは、一部のシーンを除いて流れません。現代のプログラム技術では任意に流す事など簡単なのですが、今回いろいろあって開発時間が短く(言えない…コミケで三日間つぶした後、正月三が日で急遽仕上げたなんて…w)、実装のデバッグが間に合いませんでした。ゴメンネ!

★ プログラムの説明1:初期設定 ★
 2行:DIM 変数[数字(添字:ソエジと読む)]という記述があります。これは配列(はいれつ)変数と言って、中規模上のプログラムでは避けて通れない大事な要素なので、少し字数を使って説明します。同じような変数と処理を「変数A1の処理:変数A2の処理:変数A3の処理…」と並べると、大変な量になってしまいます。そこでDIMで角カッコの中の数字を定義すると、定義した数字の分だけ、それぞれが別の変数として使えます。例えば三つの似た変数を使いたいなら「DIM A[3]」と書くと、A[0]・A[1]・A[2]がそれぞれ変数として使えます(DIMは3、添字は0~2である点に注意!)これを全部似たような処理で使うなら、「FOR I=0 TO 2:変数A[I]の処理:NEXT」と書けば、三つ全部が一ヶ所でまとまります、配列は後日さらに説明したいと思います。
 7~11行:BGで背景を作っています。本当はシーンごとに独自のキャラと背景が必要ですが、容量の関係でとても無理でした。町並みは10行のBGSCALEで大きさを二倍にし、11行で231~245番の建物用のBGをランダムに並べています。
 12~17行:冒頭の説明で、13~16行で文章を書いています。WAKUとHABは後述。
koz03_p1.jpg

★ プログラムの説明3:定義済み処理 ★
 例によって同じ処理が何度も出てくる場合、いちいち個別に書いている面倒なので、ここで定義しています。これは初心者のプログラムの行数が増えてしまう原因の一つで、初心者で1000行をこえてしまうプログラムも、うまくまとめれば、300行以内に収まったりします。3はリストの一番下に入っていますが、プログラムの説明と学習という事で、2より先に3を紹介します。
@YESNO 後述のDEF MENUを使って「はい/いいえ」の二者択一
@MONSTER 怪物遭遇の共通処理
 二ヶ所のどちらから出て全く同じ演出ですが、これは一方で怪物に遭遇した時、同じ場所にまた来たか?と混乱させるためです。実は戦いのルーチンも簡単で、どちらから来ても同じ選択ですぐ勝敗が決まってしまいます。負けたら@END_BADに飛んでいます。本当はGOSUBやFORから、GOTOで外に飛び出すのはルール違反なんですが、このゲームではバッドエンドだとすぐプログラムが終わる(そこでGOSUBやFORに入っているというループ情報が消える)ので、そのまま飛ばしちゃっています。一方ではアイテムがゲットできるが、これは@1112で処理しています。
@KOKOMADE 「この先進めない」のメッセージ表示
DEF WAKU LX1,LY1,LX2,LY2 枠線を描く
 コマンド入力ゲームでおなじみメッセージ枠です。最初は文字キャラの枠線で描いたのですが、複雑になったので、GFILLの青で塗りつぶし、GBOXの白で枠を描きました。このため座標はグラフィック単位でなく文字単位で、またLX2とLY2は右端の座標でなく、枠の横長さと縦高さを指定します。
DEF MCLS 文字とグラフィックの画面クリア
 COLOR命令をいじっていますが、これはそのままCLSをすると、「COLOR #TWHITE,#TBLU
E」すなわち青地に白字で塗りつぶされてしまうので、一度ゼロ(透明色)の背景でCLSしてからCOLORを戻しています。
DEF HELLO LS 住人登場
 LSは会話に現れる住民の姿で、SPSETの0が中央の大きな姿、1が右下の台詞の横に出ます。スプライトキャラ番号は、プチコンに標準装備されている464~1176番から、正面から見た姿を使っています。また32番は以前説明した通り空白なので、LS=32だと何も出ない上、BEEP 40のシュパッという音も出ません。
DEF MES LA,LB,L$ メッセージ表示
 L$に台詞を入れると、徐々に言葉が表示されますが、Bボタンを押していると、徐々なく一気に進みます。またL$の中に"/"(スラッシュ)を入れると文章が改行します。LAが1だと、スペース以外では一文字ごとにBEEPで音を出して喋っているように、0だと無音でト書きのようになります。LBが1だとDEF HABを呼び出す、つまり次の会話や展開に進む前に、ボタンが押されるまで待ちます。余談ですが開発中のプチコンをバージョン3.6.3にアップグレードしていなかったので、ここの実装時のフリーズして焦りました(WAITを入れずにBEEPを繰り返すとフリーズする)。現在のプログラムはバージョン3.6.2でもフリーズせず動くようになっています。
DEF MENU(LN) 選択メニュー
 実は変数の宣言または初使用は、「DEFの外でするとDEFの外でも中でも同じだが、DEFの中で使うとDEFの中だけ有効」という特徴があります。このため選択メニューの項目名に使うDIM Q$[3]だけは、外で宣言しました。LNはその時に表示する項目で、例えばMENU(2)ならQ$[0]とQ$[1]の二つを選ぶメニューを出します。
 236~238行:Q$[]に入っている項目を全て調べ、一番長い文字数をLLに入れています。このLLを使って、DEF WAKUで描く横幅を決めて、項目を出します。今回は選ぶ項目が少ないので、項目は縦一列にしか並びません。
 241~247行:変数LQがプレイヤーの選ぶ結果で、LQが-1になっている限り、このREPEATが続きます。BUTTON()の帰り値をLBに入れ、LBが上か下なら指マーク(カーソル)を上下させ、LAがAボタンなら、その位置の指マークのY座標から、選んだ項目番号を決めます。
 248~251行は指マークをいろんな色で描き、ここを選んだ事を判りやすく表示しています。
 順番が前後しますが、DEFの後ろにカッコがついていますが、これはDEFで処理した変数を、DEFを呼び出した所に「RETURN 変数」を使って返すという処理です。つまりここでは前述のLQを返しています。
@LR 「左に行く」「右に行く」「戻る」のメニュー項目を代入する
DEF GETITEM L$ アイテムを入手のメッセージ表示
DEF HAB ボタンが押されるまで待つ
@BAD_END バッドエンド
 END命令を入れればプログラムは終わりますが、一番後に置いて、END命令がなくても終了にしています。
koz03_p2.jpg

★ プログラムの説明2:各場面での会話処理 ★
 ネタバレの意味もあるので、大切な所だけ解説します。それぞれのシーンは枝分かれという事で、トップを@1、次の分岐は@11と@12、その分岐は@12なら@121と@122…と関連づけています。
@111 若い男の家
 アイテムの入手で、一番変化がある場所です。ここではクリアに必要なアイテム(K$[0])とは別に、QFというミニクエストのフラグを設定しており、0=初対面時/1=クエスト依頼中/2=クエスト達成/3=達成の後の4種類を、IF命令とELSEIF命令を使った「多重分岐命令」で処理しています。
@1122 盗賊風の女性の家
 ここも独自の選択をしているが、一方を選ぶとバッドエンドになります。
@12 老人の家
 特に苦労もせず、重要アイテム(K$[1])をゲットできます。アイテムをゲットすると台詞が変わります。
@121 若い女の家
 @111から続くイベントです。QFが0=@111でクエストも起きてないので進展なし/1=クエスト依頼なのでQFを2にする/2か3=クエスト達成なのでその後のセリフと変わります。
koz03_s3.jpg

@1212 王様の家
 何か月かかってもクリア出来ない本格ADVではないので、グッドエンドは簡単に作りました。KF[0]とKF[1]とKF[2]を三つ掛けてゼロになる、つまりどれか一つでもフラグがまだゼロなら「三つ無いか」、そうでなければ三つとも持っているのでグッドエンドとなります。この時演出として「SPCHR 0,24」で王様の姿を宝石にしてみました。
@122 ジャンケン騎士の家
 ADVの中には理づくめだけでなく、運にたよらないとクリアできないゲームもあるので、ここで入れてみました。DEF MENUでジャンケンをし、勝敗結果で@KATI/@MAKE/@AIKOにそれぞれ飛ばしています。ジャンプ先はもっと簡単にも書けるのですが、わかり易さを考えてこうしました。
koz03_s2.jpg

★ 最後に ★
 B-Magaさんからは、学習しやすいミニゲームをと頼まれているのですが、今回はADVなら簡単だと思ったら、別の意味で単調かつ難しいゲームになってしまったような…私自身、プログラム講座を書くのは初めてで、試行錯誤してやっております。ご勘弁ください(汗)
 実はどれくらい苦労してグッドエンドまで行けるか、検討していないんですが(^^;、完成品で手づまりせず、グッドエンドに行ける事は確認済みです。ぜひ挑戦してみて下さい!
(第四回につづく 次回はまたアクションゲームに戻ります)
★今回の教材プログラムは、サーバにアップしてありますので、サーバからダウンロードしてご覧下さい。
公開キー  :KFDRXT3(連載が進んで新しい教材プログラムが追加されると、公開キーも変わります。この公開キーでダウンロード出来ない場合は、連載の一番新しい回の公開キーをご利用下さい)
プロジェクト:KOZA
ファイル名 :上の教材プログラムの見出しをご覧下さい。
=-=-=-=-=-=-=-=-=-=-
次の更新は、1月24日、『フリーゲームレビュー』の予定です。お楽しみに!

2019年01月17日

師匠TのチャレンジARSゲーム!~第拾弐回・暗黒星雲(その2)【1983年・T&E SOFT】

うむ! 師匠Tであるぞ!
今回も、T&E SOFTの『暗黒星雲』を攻略していくぞ!


話は中盤。新機軸の一つ『四分割画面』や、宇宙船でのエイリアンとのチェイスなど、面白くなっていくぞ!

それではいってみようぞ!

【本編】
ars1901-01.JPG
助けたロボット・ボブとともに、再び宇宙の旅へ。
彼からも情報収集をしてみようぞ。特に、彼からは、主人公スターアーサーに関するある謎が……!

ars1901-02.JPG
ある宙域で、またも宇宙船を発見。今回は生命反応アリとのこと。
生き残りがいるのか、それとも……?

ars1901-03.JPG
これが、新機軸のその2、『四分割画面』じゃ! 黒くなっているのは現在向いている方向の風景。左上の矢印は、その方向のカーソルキーを押したときに向くことになる画面を表しておる。
操作に戸惑うであろうが、屈してはならぬ! 制圧前進あるのみじゃ!

ars1901-04.JPG
こ、この目は!? この宇宙船の住人、エイリアンじゃ!
奴に追いつかれると殺されてゲームオーバーになってしまう。急ぐのじゃ!!

ars1901-05.JPG
どうやら、ここは転送ルームらしい。この部屋の中にいる者を、宇宙の彼方へ吹き飛ばすことができるそうじゃが……。
むむ、これを使えば……!?

ars1901-06.JPG
そしてここが、その転送ルームの制御室のようじゃ。ここであることをすれば、にっくきエイリアンともおさらばできるぞ!

ars1901-07.JPG
(撮影に失敗してしまった、すまぬ汗)
何やら保管庫のようじゃな。この中に大切なものが入っている予感がするのじゃが、どうすれば開けることができるのか……

果たしてこの先、どうなるのか……

次回に続くのじゃっ!!

=-=-=-=-=-=-=-=-=-=-

次の更新は、1月21日、『プチコンゲームプログラミング講座』の予定です。お楽しみに!

posted by 裏編 at 10:00| チャレンジARS | 更新情報をチェックする

2019年01月14日

ActiveBasicとDXライブラリでゲームプログラミング!~第3回・キー入力、ジョイパッド入力を使ってみよう!

n88_reon.gif
玲音:あけましておめでとうございます! B-Maga編集部の紅一点、玲音です! 今月も、ActiveBasicとDXライブラリを使ったプログラミングを勉強していきましょう!

n88_kaede.gif
楓:玲音先輩に、この講座に引きずり込まれちゃった楓です! あけましておめでとうございます!

n88_reon.gif
だから、引きずり込んだなんて、人聞き悪いなぁ。

n88_kaede.gif
えへへ。それで先輩。今月は何をするんですか?

n88_reon.gif
うん。今月は、IF文を使った移動の制御と、そして、キー入力でキャラクタを動かす方法について説明していくよ。

n88_kaede.gif
はーい!



~こたえあわせ~
n88_reon.gif
さてさて。これが問題のプログラムだったね。

=-=-=-=-=-=-=-=-=-=-
#include "Dxlib.sbp"

Dim haikei As Long
Dim chara As Long
Dim x As Long
Dim y As Long

''初期処理
dxChangeWindowMode(1)
dxDxLib_Init()
dxSetDrawScreen(DX_SCREEN_BACK)

''背景を読み込む
haikei = dxLoadGraph("haikei.bmp")
''ニコニコを読み込む
chara = dxLoadGraph("niko.bmp")

x = 100
y = 70

Do
  ''画面をクリア
  dxClearDrawScreen()

  ''何等かの処理
  dxDrawGraph(0, 0, haikei, 1)
  dxDrawGraph(x, y, chara, 1)

  x = x + 4

  ''画面に反映
  dxScreenFlip()
  ''メッセージ処理
  If dxProcessMessage() = -1 Then
    Exit Do
  End If
Loop

''後処理
dxDxLib_End()
End
=-=-=-=-=-=-=-=-=-=-



n88_kaede.gif
これを実行すると、ニコニコが右に移動していくけど、画面の端にぶつかっても止まらないので、それをどうするか、って話でしたよね。

n88_reon.gif
そうだね。その答えなんだけど、言葉にすると簡単。『画面の端にぶつかったら止まる』ようにすればいいんだよ。

n88_kaede.gif
画面の端にぶつかったら、止まる、ですか……。あ! ここであの命令が出てくるんじゃないですか?

n88_reon.gif
おっ、楓ちゃんもピンときたみたいだね。さぁ、その命令は?

n88_kaede.gif
IF命令ですっ!

n88_reon.gif
正解! その通り。IF文で、画面の端にぶつかったかどうかチェックして、そしてぶつかっていたら動きを止めればいいんだよ。

n88_kaede.gif
なるほどっ。まず、画面の端にぶつかったかどうか、ですけど、それはどうしたらいいんですか?

n88_reon.gif
この場合は、キャラクタが画面の右端を表す640を超えたかどうかでチェックするのがいいと思うよ。かといって、そのまま

=-=-=-=-=-=-=-=-=-=-
X >= 640
=-=-=-=-=-=-=-=-=-=-

n88_reon.gif
ってしてもダメだけどね。

n88_kaede.gif
どうしてです?

n88_reon.gif
思い出してみて。座標に使っている変数XとYはキャラクターの左上の位置だったじゃない? だから、上のようにすると、結局キャラは左端を超えちゃうんだよ。

abdx1901-01.jpg

n88_kaede.gif
あっ、なるほどっ。ということは、Xにニコニコの幅を足した値が、640以上かどうかを判定すればいいんですねっ。

n88_reon.gif
うん、その通り。次にニコニコの動きをどう止めるかだけど、これは簡単。640-ニコニコの幅をXに入れればいいだけ。
ということで、それらを入れるとこうなりまーすっ。

=-=-=-=-=-=-=-=-=-=-
#include "Dxlib.sbp"

Dim haikei As Long
Dim chara As Long
Dim x As Long
Dim y As Long

''初期処理
dxChangeWindowMode(1)
dxDxLib_Init()
dxSetDrawScreen(DX_SCREEN_BACK)

''背景を読み込む
haikei = dxLoadGraph("haikei.bmp")
''ニコニコを読み込む
chara = dxLoadGraph("niko.bmp")

x = 100
y = 70

Do
  ''画面をクリア
  dxClearDrawScreen()

  ''何等かの処理
  dxDrawGraph(0, 0, haikei, 1)
  dxDrawGraph(x, y, chara, 1)

  x = x + 4
  If x + 100 > 640 Then
  x = 640 - 100
  End If

  ''画面に反映
  dxScreenFlip()
  ''メッセージ処理
  If dxProcessMessage() = -1 Then
    Exit Do
  End If
Loop

''後処理
dxDxLib_End()
End
=-=-=-=-=-=-=-=-=-=-



n88_kaede.gif
おー! ニコニコが画面の右端で止まりましたよ!

n88_reon.gif
これをちょっといじくるともっと面白いのができるよ。例えば、画面の端についたら、移動量を逆に(+4なら-4というように)するようにして、画面の左右を行ったりきたり、とか。興味があればやってみてね。

n88_kaede.gif
はーい!

n88_reon.gif
さてさて。それでは、ここからが本題だよ!

~キー入力しよう!~
n88_reon.gif
さて、キー入力だけど、それにはある関数を使うんだよ。その名も、dxGetJoypadInputState関数!

n88_kaede.gif
その関数って、どんな命令なんですか?

n88_reon.gif
うん。この関数は、ジョイパッドやカーソルキーなどを押すと、押したキーに対応した情報を返してくるんだよ。返ってきた情報から、あるキーが押されたかどうかをチェックするには、こうすればいいの。

=-=-=-=-=-=-=-=-=-=-
dxGetJoypadInputStateの戻り値 And キーの値
=-=-=-=-=-=-=-=-=-=-

n88_reon.gif
戻り値を変数に代入して、それを使うといいと思うよ。こんな風にね。

=-=-=-=-=-=-=-=-=-=-
k = dxGetJoypadInputState(DX_INPUT_KEY_PAD1)
If (k & @@@) <> 0 Then

End If
=-=-=-=-=-=-=-=-=-=-

n88_reon.gif
上の例にある通り、Andを取った結果が0でなければ押されたことになるの。

n88_kaede.gif
なるほど。それで先輩っ。例の中にある、DX_INPUT_KEY_PAD1ってなんなんですか?

n88_reon.gif
あぁ、それはどのジョイパッドをチェックするかを表したものだよ。DX_INPUT_KEY_PAD1なら、キーボードとジョイパッドの1番をチェックするの。ちなみにジョイパッドの2番なら、DX_INPUT_PAD2だよ。

n88_kaede.gif
なるほどー。

n88_reon.gif
それで、キーに対応した値だけど、代表的なものでは次の通り。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
DX_PAD_INPUT_DOWN……下、テンキーの2
DX_PAD_INPUT_LEFT……左、テンキーの4
DX_PAD_INPUT_RIGHT……右、テンキーの6
DX_PAD_INPUT_UP……上、テンキーの8
DX_PAD_INPUT_1……ボタン1、Zキー
DX_PAD_INPUT_2……ボタン2、Xキー
DX_PAD_INPUT_3……ボタン3、Cキー
DX_PAD_INPUT_9……ボタン9、ESCキー
DX_PAD_INPUT_10……ボタン10、スペースキー
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

n88_reon.gif
これだけ覚えておけば、ゲーム作りで困ることはまずないと思うよ。後は、リファレンスを読んでね。

n88_kaede.gif
はーい。ということは、Xキーが押されたかどうかチェックするなら、

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
k = dxGetJoypadInputState(DX_INPUT_KEY_PAD1)

If (k And DX_PAD_INPUT_1) <> 0 Then

End If
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

n88_kaede.gif
とすれば、いいわけですねっ。

n88_reon.gif
うん、その通り。ではさっそく、これを使って、ニコニコを動かしてみよう!

n88_kaede.gif
はーい!

~ニコニコを動かそう!~
n88_reon.gif
さてさて、キー入力でニコニコを動かす考え方だけど、基本的な考えは次の通り。
・上が押されたら、上に動かす
・下が押されたら、下に動かす
・右が押されたら、右に動かす
・左が押されたら、左に動かす
これをプログラムにすればいいんだよ。

n88_kaede.gif
動かすには、位置を表す変数の値を変えてやればいいんですよね。

n88_reon.gif
画面の上や左の端についたかどうかもチェックする必要があるよね。画面の上端は0、左端も0、そして下端は480だよ。

abdx1901-02.jpg

n88_reon.gif
なお、上端や左端を超えたかどうかをチェックするさいには、普通に変数の値を比べればいいよ。

abdx1901-03.jpg

n88_reon.gif
それらを踏まえて、最初のプログラムを改造すると、こうなります。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#include "Dxlib.sbp"

Dim haikei As Long
Dim chara As Long
Dim x As Long
Dim y As Long
Dim k As Long

''初期処理
dxChangeWindowMode(1)
dxDxLib_Init()
dxSetDrawScreen(DX_SCREEN_BACK)

''背景を読み込む
haikei = dxLoadGraph("haikei.bmp")
''ニコニコを読み込む
chara = dxLoadGraph("niko.bmp")

x = 100
y = 70

Do
  ''画面をクリア
  dxClearDrawScreen()

  ''何等かの処理
  dxDrawGraph(0, 0, haikei, 1)
  dxDrawGraph(x, y, chara, 1)

  ''キー入力
  k = dxGetJoypadInputState(DX_INPUT_KEY_PAD1)

  If (k And DX_PAD_INPUT_UP) <> 0 Then
    ''上に動かす
    y = y - 4
  End If

  If (k And DX_PAD_INPUT_DOWN) <> 0 Then
    ''下に動かす
    y = y + 4
  End If

  If (k And DX_PAD_INPUT_LEFT) <> 0 Then
    ''左に動かす
    x = x - 4
  End If

  If (k And DX_PAD_INPUT_RIGHT) <> 0 Then
    ''右に動かす
    x = x + 4
  End If

  ''画面の端に出たかチェック
  ''上端
  If y < 0 Then
    y = 0
  End If

  ''下端
  If y + 100 > 480 Then
    y = 480 - 100
  End If

  ''左端
  If x < 0 Then
    x = 0
  End If

  ''右端
  If x + 100 > 640 Then
    x = 640 - 100
  End If

  ''画面に反映
  dxScreenFlip()
  ''メッセージ処理
  If dxProcessMessage() = -1 Then
    Exit Do
  End If
Loop

''後処理
dxDxLib_End()
End

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

n88_kaede.gif
おー! ニコニコがカーソルキーで動くようになりましたよ!

n88_reon.gif
これでゲームの基本部分は完成。来月からは、いよいよゲーム作りに進むよ。
次回はまず、ゲームを作るための骨組みの考え方について説明していきます。お楽しみに!



=-=-=-=-=-=-=-=-=-=-
※次の更新は、1月17日、『師匠TのチャレンジARSゲーム!』の予定です。お楽しみに!