2018年10月22日

NIKO NICO CINEMA!~かわいいかわいい♪ 動物特集

さてさて、今月もやってきました『NIKONIKO CINEMA!』のコーナー。
今回は、動物特集でお送りしていこうと思います。
この動画を見て、忙しさに疲れた心をいやしていきましょうー。
でははじまりはじまりー。

~3兄弟ぬこ【成長】


三匹の兄弟の子猫たちがじゃれあう様子です。投稿者さんは動物病院の看護婦さんだそうで。
三匹のじゃれあう様がとてもかわいいですね。これで、まずは癒されポイント1ってところでしょうか(笑

~ぺんぎん行進


どこかの動物園で、ペンギンさんの集団が、係員さん(?)と一緒てこてこ歩く、の図です。
時折、追いつこうとしてるのか、ちょこちょこちょこと早足になるところが、なんともかわいいです。
癒されポイント+1ですね(笑 現在2ポイント)

~こぬこVS夫の指


子猫ちゃんが、指とじゃれあってる動画ですね。本当にじゃれあってるのが、とてもかわいいですよね。本当に、子猫とか子犬とかには癒されます。うんうん。
……説明文は読まないほうが幸せかもしれませぬ。

~最後に
今月のNIKONIKO CINEMAはどうでしたでしょうか?
これで、疲れた心が癒されてくれたら、とても嬉しいです。

それでは、また来月、お会いしまょう。フガクク(某国民的主婦的)



※次の更新は、11月5日。特集『色々な言語でDXライブラリ!』の予定です。お楽しみに!
posted by 裏編 at 18:42| PCメディア情報 | 更新情報をチェックする

2018年10月18日

フリーゲームレビュー:自爆して点を稼げ!PSPにもなったよ。EveryExtend

今回紹介する『Every Extend』は、裏編の大好きな作品の一つです。
このゲームの特徴を一言で言い表すと、『シンプル、やりこみ』。どんなゲームかを単純に言うと、『はじけろ』。
ただこれだけです。
では、このゲームについて説明していきましょう。

~シンプルに弾けろっ
まず自機は爆弾です。まごうことなき爆弾です。爆弾ですから、爆発しますし、爆発すると爆風も出ます。
さて、ポイントはここから。四方から敵キャラがやってくるのですが、この敵をこの爆風で倒していくわけです。
もちろん、この敵も倒されると爆風を出すので、うまくいけば、多くの敵を一度の爆発で倒すことができます。
とはいえ、スコアが上がると自機がエクステンドされ、さらにそのエクステンドもエクステンドしやすいようになっているのですが、やはり数に限りがあるので、一度の爆発で多くの敵を倒せるようにうまく爆破位置を考えて爆破する必要がありますし、敵にあたっても爆発してしまいますので、うまく敵をよけながら適切に爆破させる必要があるのです。
さて、ゲームを進めていくと、やがて中ボス、そして本ボスが出てきます。中ボスはそれほど強くありませんが(それでも雑魚に比べるとやはり手ごわい)、本ボスは3ウェイショットで攻撃してきたり、バリアを張ってきたりと、一癖もふた癖もある手ごわい奴です。こいつを倒せば、ゲームクリアとなりますよ。

どうでしょう。 このようなシンプルながらも、いやシンプルながらも面白い。それが、この『Every Extend』なのです。

~やりこんで弾けろっ
さて、この『Every Extend』はただこれだけのゲームではなく、やりこみを助ける要素と、二つのモードがあります。まずは要素から。
このゲームでは、倒すとアイテムを出す敵がいます。青い敵が落とす青いキューブを取るとボーナス得点。さらに続けてたくさんとると、どんどん得られるボーナス点も増えていきます。(ただし、自爆したり敵や弾に触れてやられるとリセット)
赤いキューブを取ると、敵の出現速度と、敵の移動スピードが上がります。
つまり、高得点を稼ぐには、青いキューブを立て続けにとってボーナスを稼ぎ、さらに赤キューブで敵をたくさん出現させ、そいつらを一度に爆破するといいわけですね。
そして、二つのゲームモード。
Lightは初心者向けのイージーモード。そしてHeavyは、やりこんだプレイヤー向けのハードモード。敵が撃ち返して来たり、攻撃が激しかったりととても難しいモード(だそう)です。LightをやりこんだらHeavyに挑戦するのも面白いかもしれませんね。
Heavyを楽にクリアできるようになったら、このゲームを極めたといっても過言ではない……かもしれません。

~最後に
シンプルながらも、スコアアタックに思わず夢中になれる『Every Extend』。
「どんなゲームでもクリアしてみせるぜ!」というゲーム自慢のプレイヤーの方は、ぜひプレイしてみてはどうでしょうか? 面白さはB-Magaの保証済みですよ^^

なお、このゲームは( ゜ワ゜)ノ 氏の作品で、こちらからダウンロードすることができますよ。

そうそう、このゲームはPSP用に移植もされたので、そちらもプレイしてみるのもいいかもしれません、と最後に言っておきます(笑



※次の更新は、10月22日、『NIKONIKO-CINEMA』の予定です。お楽しみに!
posted by 裏編 at 10:22| フリーゲーム情報 | 更新情報をチェックする

2018年10月14日

プチコンゲームプログラミング講座~第0回「ゲームプログラミングを始めてみよう

文 プチ太郎 氏
=-=-=-=-=-=-=-=-=-=-
 皆さんはじめまして。プチ太郎と申します。私の事は皆さんご存知でないと思われるので、自己紹介と、こちらに書き込むことになったきっかけを、簡単に。


 私がホビーとしてのパソコンを知ったのは、1980年頃からで、当時はパソコンでなくマイコンと呼ばれていたため、ここではマイコンと書きます。前後に何度か押し寄せた、ホビー向けパソコンブームですが、前年の1979年に「スペースインベーダー」が大ヒットした事で、多少大きな波が来ました。

 この頃の人気機種は、シャープのMZ-80K/Cと、後を追うように発売された、NECのPC-8001。そう、X68000やPC-9801はまだ、出ていなかったのです。

 この頃はコンピュータネットというものも、日本にはなく(アメリカには既にあったようですが)、情報交換はマイコン雑誌で、ゲームの入手方法も買うより、雑誌に載ったリストを手打ちで入力するという手段が、かなりの比率を占めていました。初代プチコンやIchigoJamなどを使った人はわかると思いますが、リストの手打ちは、過去の原点回帰なのですよ!w

 で主なマイコン雑誌ですがは、日本最古で何と現在も続いている「I/O」と、そこからのれん分けした「アスキー」、そして「マイコン」「RAM」が四大雑誌。「I/O」や「アスキー」を読み返すと、その後日本のTVゲーム界で大活躍する大御所の皆さんが、まだ学生時代のうちから、いろいろなゲームを投稿していました。「マイコン」の弟分である「マイコンBASICマガジン」が登場するのは、もう少し後の話です。この当時、自分でゲームを自作する方法は、大別して三つ。

1. BASIC(ベーシック)という、初心者向けの簡単なプログラミング言語で作る。ただし実行速度が非常に遅く、動かすための命令"RUN"が、「『走れ』じゃない、『歩け』だ!」なんて言われましたw

2. BASICよりコンピュータ側が素早く解釈しやすい、機械語(マシン語)とかアセンブラ(アセンブリ言語)で作る。こちらは速度は早いものの、人間の目で見ると非常にわかりにくかったため、当時のマイコン雑誌には、「BASICの遅さにたえかね、機械語を勉強し始めたものの、むずかしくて訳がわからん」なんての読者の投稿が、よくありました。

3. BASICやそれによく似た言語(こういうのを高級言語と言います)を、機械語に変換して保存し、実行する方法で、コンパイラと言います。しかし当時ホビーマイコンで使えるコンパイラは、MZ-80K/Cを除けば、あまり多くありませんでした。

 ちなみ今これを書いている私も、機械語はサッパリで、当時からBASICしか使えませんでしたが、自宅や高校やマイコンショップでいろんなマイコンをいじりながら、BASICでもメチャクチャ遅くならないようにごまかせるwゲームをぼちぼち作って、皆に遊んでもらった事もありました。

 高校を卒業すると、燃え尽き症候群と言うのでしょうか、なぜか意味もなくパソコンに触れなくなり(この頃はもうマイコンと言わなくなっていた)、今も根強い人気のあるMSXやX68000といった、独自規格パソコンではもっとも面白いと言われた世代は、リアルタイムで触れていません。


 それでもコンピュータとプログラミングの事が忘れられず、大学を卒業してソフトウェア業界に就職しましたが、当時まだ主流だったCOBOL(コボルと読み、事務処理に使う言語。BASICの兄貴分である)には、むしろ苦戦しました…wこのプログラマー時代、MS-C(C言語)やVB(Visual Basic)を覚えた事は、現在のプチコンにも役立っています。

 そして時代は変わり、コンピュータの性能が日進月歩どころか、秒進分歩になった事で、BASICなどの高級言語もVBの頃にはもう、驚くほどの高速で動くようになりました。昔のBASICの早さを三輪車とすると、昔の機械語は自動車ぐらいでしたが、今のBASICは…ジェット戦闘機より上でしょう!w

そしてコンピュータ業界から転職して別の仕事をしていた2011年3月、プチコンが発売された事で、あの頃の懐かしい記憶がムラムラと沸き起こって買ってしまい(なんか男子中学生がエロい事想像してたような書き方w)、その後いくつかのゲームを発表できた事で支持をもらいまして、現在は本業の傍ら、休憩時間や帰りの電車の中で、プチコンをいじっております。今回B-Magaさんからブログ上での連載を頂いたのも、その実績です。


 さてたわごとだけでは、連載初回としてアレなので、最後にこの連載の目的である「プログラミングと言えば、『PRINT "Hello World"』ぐらいし書けないよ~(^^;」という初心者の皆さんの、復習と予習のため、すごーく簡単なプログラムを紹介しておきましょう。以下の内容を打ち込んで、実行モードから「RUN」するか、3DSやWiiUの「START」ボタンを押してみましょう。

教材プログラム 0-1(ファイル名「KOZA00-1」)
KOZ00_1.jpg

 どうです? 画面の左から右へ、"*"印が動きましたか? 感動しました? それとも「それぐらいだったら、知っていますけど…」と思いました? 私は現役時代、自力でこれが出来ただけで、すごく感動した事を覚えています。

KOZ00_1B.jpg

 プログラムというのもいろいろあり、機械を動かすとか、中には銀行の貯金とか飛行機のチケットとか、プログラムを作っている人からは、目に見えないようなプログラムもあります(実はそういう、プログラミングで目に見えない部分が、プログラムをする人にとっては一番つまらなく、バグも見つかりにくいので、嫌われるのです)。

 それでは最後に、上のプログラムをもうちょっとだけ、複雑にしてみましょう。

教材プログラム 0-2(ファイル名「KOZA00-2」)
KOZ00_2.jpg

 どうです? ただ画面の中央に、"*"印が止まっているだけ…と思われたでしょうが、十字ボタンの、左か右を動かしてください。"*"印が左や右に動きます! そう、ものすごく簡単なアクションゲームの、原形です! あっ、画面があまりに簡単なので、教材プログラム0-1と区別がつかないや!(^^;orz

KOZ00_1B.jpg

 あと注意しておくと、「画面の端まで行ったか?」という判定は入れていないので、画面の左端や右端まで行くと、プログラムの実行結果がおかしくなります。既にある程度実力があり、IF命令を知っている人は、IF命令を組み込んで、画面の端から外へは、絶対動けないように改良してみて下さい。

 TVゲームのプログラムというのは、これをもっともっと複雑にしたプログラムの集まりで、作られています。

 では、自力でキャラクターを動かせて、ワクワクした人は(え?俺だけ?w)、次にどうしたらいいか? それは次回のお楽しみとしましょう。

(第一回につづく)

★今回の教材プログラムがうまく打ち込めなかった方のために、同じ教材プログラムを、サーバにアップしてあります。必要な方はサーバからダウンロードして、どこが間違っているかなどを、見比べてみて下さい。

公開キー  :EZENN3ZJ(連載が進んで新しい教材プログラムが追加されると、公開キーも変わります。この公開キーでダウンロード出来ない場合は、連載の一番新しい回の公開キーをご利用下さい)
プロジェクト:KOZA
ファイル名 :上の教材プログラムの見出しをご覧下さい。



※次の更新は、10月18日、フリーゲームレビューの予定です。お楽しみに!

2018年10月11日

師匠TのチャレンジARSゲーム!~第拾回:『ミステリー1DK』 (すぎけん氏)

chare-1810-00.JPG

うむ、師匠Tである! さて、今月は久しぶりにフリーソフトのアドベンチャーゲームを紹介しようと思う。
今月は、すぎけん氏の『ミステリー1DK』じゃ。
このゲームはシンプルながらも、なかなか面白いゲームじゃ。
ではいくとするぞ。

どんなゲームも完全制覇じゃ!!

【プロローグ】
あなたは、P.M.7:00の飛行機で札幌(ススキノ)に出張に行く事になりました。
しかし、今月のこづかいは、あと3千円しか残っていません。

「くそー、このままじゃせっかくススキノに行くのにラーメン横町しか行けないぞ。
 ん。まてよ、そういや あいつ(妻)今日は、友達と食事に行くと言ってたな。
 たぶん、夜まで帰ってこないな。  ……よし、あいつのヘソクリを探そう!
 来月、こっそり返しておけば気づかんだろう。」

というわけで、さっそく家に帰り 妻のヘソクリを探す事にしました。

【本編】
chare-1810-01.JPG
これがゲーム開始時の画面じゃ。
ところどころにヒントが出てくるのが親切じゃの。
ではさっそく、ヒント通りにLookしてみるとするか。

chare-1810-02.JPG
台所じゃな。 こんなところに手がかりなんかないような気もするが……いやいや、むしろこういう場所にこそ、何かあるかもしれぬぞ。

chare-1810-03.JPG
玄関じゃ。じゃが、目的を達成せぬままここを出ることは許されぬ!
わが流派はあくまで、前進制圧あるのみじゃ!

chare-1810-04.JPG
机の上にパソコンが置いてあるな。
このパソコンに、何か手がかりがないかのう……

chare-1810-05.JPG
次の部屋にやってきたぞ。
果たして、ここに手がかりはあるのか、そして目的のものはどこにあるか。この先は……

ここから先は、キミの目で確かめるのぢゃっ!!

健闘を祈っておるゾ!!




※次の更新は、10月15日。新連載・『プチコンゲームプログラミング講座』の予定です。お楽しみに!
posted by 裏編 at 09:58| チャレンジARS | 更新情報をチェックする

2018年10月08日

VB.NETでDirectX~第5回・文字を表示して、音を鳴らそう!

博士:ぐぅぐぅ……

助手:あ。博士、また寝ちゃってる。仕方ないなぁ。

博士:すやすや……。

助手:博士、起きてくださーい。起きてくれないと、おーちゃんに……

博士:ぐぅぐぅ……ぜ……

助手:?

博士:すやすや……前回は、確か、色々なサイズのキャラがあるときはどうするか、また、画面のサイズが640x480以外だったらどうすればよいか、だったのう。

助手:寝言で講義してる……。

博士:一つ目の疑問は、前回話したGetGraphSize関数を使って、画像のサイズを変数に格納して、それを使えばよいのじゃ。こんな風にのう……ぐぅぐぅ……。

----------
Dim pad As Integer
''ここから新しく追加した部分です
Dim wid As Integer
Dim hei As Integer
''ここまで

……(中略)……

hChara = LoadGraph("chara.bmp")
''ここから新しく追加した部分です
GetGraphSize(hChara, wid, hei)
''ここまで

……(中略)……
If x < 0 Then
  x = 0
End If

If x + wid > 640 Then
  x = 640 - wid
End If

If y < 0 Then
  y = 0
End If

If y + hei > 480 Then
  y = 480 - hei
End If
----------

博士:ぐーぐー……原理は前回教えたものと同じじゃ。横座標の入った変数Xに、幅の入った変数widを足したもの。つまり、画像の右端の座標が、画面の端である640を超えていたなら、その640から幅を引いた座標を代入して、位置を補正しているのじゃ……。

助手:なるほど。それで二つ目の疑問は?

博士:うむ、それは簡単。画面の左の位置、画面の上の位置、そして幅と高さを定数にしてもっておき、それを0や640の代わりに使えばよい……。それらを全て入れたプログラムリストはこうなるぞ。すやすや……。

----------
Dim hChara As Integer
Dim x As Integer
Dim y As Integer

Const SCREEN_LEFT = 0
Const SCREEN_TOP = 0
Const SCREEN_WIDTH = 640
Const SCREEN_HEIGHT = 480

Sub Main()
  Dim pad As Integer
  Dim wid, hei As Integer

  ''ウィンドウモードの設定
  ChangeWindowMode(1)
  ''ウィンドウタイトルの設定
  SetWindowText("風船をジョイパッドで動かすプログラム")

  ''DXライブラリの初期化
  If DxLib_Init() = -1 Then
    Exit Sub
  End If

  ''ダブルバッファリング
  SetDrawScreen(DX_SCREEN_BACK)

  hChara = LoadGraph("baroon.bmp")
  GetGraphSize(hChara, wid, hei)

  x = 100
  y = 100

  ''メインループ
  Do
    ''画面クリア
    ClearDrawScreen()

    pad = GetJoypadInputState(DX_INPUT_KEY_PAD1)

    If (pad And PAD_INPUT_UP) <> 0 Then
      y = y - 2
    End If

    If (pad And PAD_INPUT_DOWN) <> 0 Then
      y = y + 2
    End If

    If (pad And PAD_INPUT_LEFT) <> 0 Then
      x = x - 2
    End If

    If (pad And PAD_INPUT_RIGHT) <> 0 Then
      x = x + 2
    End If

    If x < SCREEN_LEFT Then
      x = SCREEN_LEFT
    End If

    If x + wid > SCREEN_LEFT + SCREEN_WIDTH Then
      x = SCREEN_LEFT + SCREEN_WIDTH - wid
    End If

    If y < SCREEN_TOP Then
      y = SCREEN_TOP
    End If

    If y + hei > SCREEN_TOP + SCREEN_HEIGHT Then
      y = SCREEN_TOP + SCREEN_HEIGHT - hei
    End If


    DrawGraph(x, y, hChara, 1)

    ''フリップ
    ScreenFlip()

    If (ProcessMessage() = -1) Then
      Exit Do
    End If

    If (CheckHitKey(KEY_INPUT_ESCAPE) = 1) Then
      Exit Do
    End If
  Loop

  DxLib_End()
End Sub
----------

博士:これを、Module Module1からEnd Moduleの間に書けば動くぞ。そしてもう一つ。おーちゃん、よろしく。すやすや……

おーちゃん:うむ。実は前回のプログラムリスト、最後にDxLib_End()が入っていなかったのじゃ。ごめんなさい、ごめんなさい。

博士:うむ、おーちゃん、ありがとう。すやすや……。

助手:おーちゃんに謝らせてる……。



[DrawString命令じゃ!]

博士:ぐぅぐぅ……さて次は、文字を表示させる命令について教えるとするぞ。DrawString関数じゃ……。

助手:DrawString関数、ですか。

博士:うむ。DrawString関数はこのように使うのじゃ、すやすや……。

----------
DrawString(X座標, Y座標, 表示させる文字列, 色)
----------

助手:なるほど。それで博士。色はどのように指定するのですか?

博士:うむ。それには、GetColor関数を使うのじゃ。これは、引数からその色の数値を導き出して、返してくれるという便利な関数じゃ。ぐぅぐぅ……。

----------
GetColor(赤の明るさ, 緑の明るさ, 青の明るさ)
----------

助手:なるほど。この関数を、色のところの引数に当てはめればいいわけですね。

博士:その通りじゃ。すやすや……。例えば、白で、Helloと表示させるには、こうすればよいのじゃ……。

----------
DrawString(100, 100, "Hello", GetColor(255, 255, 255))
----------

博士:なお、このように直接入れるのではなく、変数に関数の値を代入してから、それを使ってもOKじゃ。なお、GetColor関数によって返ってくるのはLong型の値なので気を付けるように……。

----------
Dim col As Long

col = GetColor(255, 255, 255)

DrawString(100, 100, "Hello", col)
----------

博士:なお、このほかにも文字を表示させる関数にはいろいろあるが、それは省略しておくぞ。ぐぅぐぅ……。



[音を鳴らすには、LoadSoundMem関数と、PlaySoundMem関数じゃ!]

博士:うぅ、さすがにもう限界じゃ……おーちゃん、後は頼む……ばたっ。

助手:……。

おーちゃん:うむ、おーちゃんじゃ、おーちゃんじゃ。さて、音を鳴らす方法じゃが、これも画像を表示させるものと同じようなものじゃ。

助手:つまり、メモリに読み込んで、ハンドルを指定して鳴らす、ということですか?

おーちゃん:うむ、その通りじゃ。まず、メモリに読み込む方法じゃが、それにはLoadSoundMem関数を使う。使い方はこうじゃ、こうじゃ。

----------
LoadSoundMem(音声ファイルのパス)

例:LoadSoundMem("sample.mp3")
----------

助手:どの形式の音声でも読み込めるんでしょうか?

おーちゃん:うむ。WAV, MP3, Ogg, Opusの四種類が、読み込み、再生可能じゃ、可能じゃ。さて、再生には、PlaySoundMem関数を使うぞ。

----------
PlaySoundMem(ハンドル, 演奏方法, 最初から鳴らすかどうか)
----------

おーちゃん:まず最初の引数には、鳴らしたい音声のハンドルを指定する。これはわかるな、わかるな?

助手:はい。次の演奏方法は?

おーちゃん:これは、どのように鳴らすかを指定するものじゃ。次の三種類から選べるぞ、選べるぞ。

DX_PLAYTYPE_NORMAL→普通に再生する(再生している間はプログラムの流れが止まる)
DX_PLAYTYPE_BACK→バックグラウンドで再生する(再生していても、プログラムの流れは止まらない)
DX_PLAYTYPE_LOOP→バックグラウンドで再生&ループ再生

おーちゃん:一番目のDX_PLAYTYPE_NORMALは使うと再生が終わるまで、処理が止まってしまう、という難点があるので、たいていは二番目と三番目を使うことが多いじゃろう、多いじゃろう。ゲームを作る場合には特にな。
DX_PLAYTYPE_BACKは効果音を鳴らすときに、DX_PLAYTYPE_LOOPはBGMを演奏するときに使うとよいじゃろう。

助手:はい、わかりました、おーちゃん。

おーちゃん:そして最後の引数じゃが、これに1を指定すると、曲の頭から演奏する。0を指定すると、前回演奏したところから演奏するのじゃ、するのじゃ。

助手:なるほど。

おーちゃん:さて、この講義もここまで。これまで教えた内容をうまく使えば、ゲームを作ることも不可能ではないじゃろう。後はみんなの努力しだいじゃ。さらば!

助手:終わりましたか……でも、これ、どうしようかな……。

博士:ぐぅぐぅ……。

助手:あ、そうだ。

……
………
…………

博士:な、なんで段ボールに入って、海の真ん中に浮かんでおるのじゃ!? 誰か助けてくれーい!!



~完~



※次の更新は、10月11日、『師匠TのチャレンジARSゲーム!』の予定です。お楽しみに!
posted by 裏編 at 17:58| VB.NETでDirectX | 更新情報をチェックする