忍者ブログ
Admin*Write*Comment
35歳からのC言語ゲームプログラミング
[21]  [22]  [23]  [24]  [25]  [26]  [27]  [28]  [29
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

左右に向きを変えながら走る。(状況によって画像を反転)
静止状態からジャンプする。
走りながらジャンプする。

これらのアクションが出来るようになった。

キャラクターの動きには方向(X 成分・Y成分)と速度(ピクセル/秒)を表すベクトルを使う。
ジャンプ中は常に下方向に重力ベクトルを加算するため、飛び上がった瞬間から上昇方向の速度は減少し、頂点を境にマイナス方向(落下方向)となる。
あとは、地面の位置となるY座標を設定して、キャラがそこで接地するようになった。

ベクトルなんて懐かしい響き。
物理の授業を思い出したよ。
ゲームのアクションなんて、動く時の座標を操作して、それっぽく見せてるだけかと思ってたけど、ちゃんとベクトル使って重力の計算とかしてるんだね。
ビックリだ。

実行ファイルをアップローダにアップしときました。
触ってみたい方はアップローダの管理者に感謝しつつ、ご自由にどうぞ。

http://u7.getuploader.com/game/download/26/%E3%82%AD%E3%83%A3%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%BC%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3.zip

リンク先を少し下にスクロールさせると出てくる『同意する』ボタンをポチっとすれば、ダウンロードできます。
ポップアップブロックされた場合はウィンドウの上にある情報バーをクリックして『ファイルのダウンロード』を選んでください。
ファイルは圧縮されたzipファイルです。
Lhacaなどで解凍してから、フォルダ内のexeファイルをダブルクリックで実行できます。

矢印キーの左右でキャラクターが走り、Zキーでジャンプします。
Escキーでプログラムを終了します。
PR
今後の方針について。
取り合えずDXライブラリを取り込むところまでできたので、使い方を調べながら勉強してゆこうと思っているんだけど、簡単なゲームを作りながらやってゆくのが良いかと。
テキストのサンプルゲームとは別にね。

技術を学ぶ事が目的ではなくて、それを使って何か面白いものを作るってのが最終目的なので。

とりあえずテキストを進めつつ、最初はなるべく簡単なゲームのアイデアを同時に考えていって、イメージが固まったら、もう作品作りに入っちゃおうかなと思ってます。

まあ、そのゲームのアイデア(=面白いこと)を思いつくってのが一番難しいとは思うんだけど。
うーん、最初は面白くなくてもいいのかな。
とにかくアイデアを実現するって経験を少しずつ積み上げてゆきたいなと。
こまった問題も前の記事の通り解決して、無事に次に進みました。
走るキャラクターのアニメーションです。
キャラはサンプルデータを使わずに適当(ホントにテキトー)なのを自分で作りました。

ここからはテキスト独自のライブラリの関数も使うので、あまりコードは参考にならないと思うけど。いちおね。
RIMG0689.JPG

















たったこれっぽっちのコードとアニメーションの画像データがあればアニメを動かせるなんて、いい時代だ。

player01.gifこんな感じで走ったぜ!
これは作った画像をそのままgifアニメにしたものです。



僕が使っているテキストでは、DXライブラリを導入した後、この本の著者が作った関数ライブラリをプロジェクトに追加する形を取っている。
このテキストで作るようなアクションゲームを作る際に便利な関数を集めた.cppファイルと、それらの関数や使用する構造体とグローバル関数を定義するヘッダファイルだ。

テキストでは、とにかくそれらのファイルをHPからダウンロードしてプロジェクトに追加しろと指示される。
それに加えて、(おそらく)状況によって必要な定義を行うための.hを支持にそって作らなければならない。

ちょっと、まってよ。
いままで.cppファイルは1つでやってきたじゃん!
2つあってもいいの?
そういう場合はどんな流れでプログラムは実行されるの?
なんで、ヘッダファイルは2つに分けてあるの?

その辺の説明は一切無しである。

まあ、それでも言われたとおりにやっときゃ、後で詳しい意味がわかってくるっていう流れかも知れないし、取り合えず最初のサンプルを打ち込んだ。
キャラクタの画像データをファイルから読み込むプログラムだ。

打ち終わって実行すると、エラー・・・。
打ち込んだソースをよーく見直すも、タイプミスや、打ち忘れはない。
エラーコードを読むと、おそらくMyMainと言う関数が定義されずに使おうとされているか、呼び出されているのに答える側がいないかっぽい感じがした。(よくわからんので、ホント感覚w)

これ、テキスト側のミスじゃね?
僕の中に猜疑心がうまれた・・・。

ダウンロードして追加させられたよくわからん.cppファイルとヘッダファイルのコードを開いて上から順に睨み続ける。
不明な部分もいっぱいあるんだけど、今までの勉強から何処が関数定義で、何処が関数の呼び出しで、何処がループになっていて・・・くらいは読めた。
んで、関数のいっぱい詰まったソースの中にMyMain関数を呼び出してるっぽい部分を発見。
しかし、そのコードの中にMyMain関数はない。
ってことはMyMain関数は僕の書いたほうのソースに無くちゃいけないんじゃないか?

いっきにプログラムの流れが見えた気がした。
解説があるわけじゃないから、上記の内容からの推測だけど、たぶんあってるとおもう。

ダウンロードしたヘッダファイル=今後テキストでずーっと使う関数や変数の定義。初期設定①
        ↓
本を見て自分で書いたヘッダファイル=流動的に変る関数や変数の定義。初期設定②
        ↓
ダウンロードしたcppファイル=今後のプログラムのメイン部分以外のループや関数。外堀
        ↓
今後本を見て書いてゆくcppファイル=今後のプログラムのメイン部分。本丸

たぶん、こういうことだ。
ダウンしたcppファイルには操作や表示といった具体的な部分の抜けたメインループが入っている。
そのかわりに、そこからMyMainと言う関数が呼び出されているのだ。
つまり、僕はこれから書いてゆくソースでMyMain関数の中身を作ってゆくという事だろう。
その関数の中にキャラクターを表示したり、動かしたりする命令をガリガリと書いてゆくのだ。

と言う事は、だ。
僕がこれから書くソースにはやる事があろうと無かろうと、MyMain関数を呼び出したソースに返して(応えて)あげなきゃいけないってことだ。

で、最初に書いたキャラクターのデータを読み込むソースを見てみる。
そこにはMyMain関数らしきものは無い。
テキストのサンプルソースを確かめてもやはり無い。
やられた。このやろー!
間違えてんのはお前じゃないか!

ソースにテキストには無い
void MyMain ( ) { }
を付け加えた。
何もやる事が無いので、そのまま返すだけの関数だ。

実行してみる。
データを読み込んだだけで、表示上は何もしていないプログラムなので真っ黒なウィンドウが開いた。
あっさり、成功だ。

まあ、おかげでそれぞれのファイルの意味と、プログラムの流れを掴めたから今回は多めに見てやろう(笑)。
なんか、これを自力で気付かせるために、わざとミスを仕込んだんじゃないだろな?ってくらい、ためになった。

RIMG0687.JPG











これがダウンしたソースの一部。
メインループってコメントの下のコード。
4列目にMyMain関数を呼び出す部分がある。



RIMG0688.JPG






んで、これが今回書いたコード。
本のサンプルには中断くらいにある
void MyMain( ) {
}
が抜けていた。
つまり、呼び出された関数が返されていなかったのだ。



今日は仕事が夕方からで、奥さんも子供連れてママ友のところへ行っているので、昼間っからこんなことをしています。
PCの前でカップめんを啜りながら、テキストと睨めっこ。

夢中になれる事があれば、とりあえず幸せってタイプです。

RIMG0686.JPG

















カップヌードルのコロ・チャー(ころっとしたチャーシュー)が好き。
  • ABOUT
やってやれないことはないっ!たぶん・・・
  • カレンダー
04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
  • 最新コメント
[11/09 CALL MY NAME]
[11/09 erin]
[08/18 うずランド]
[07/11 うずランド]
[06/23 うずランド]
  • プロフィール
HN:
Call my name
年齢:
50
性別:
男性
誕生日:
1974/05/22
職業:
スロ屋店員
趣味:
いろいろ
自己紹介:
やる気だけはあるつもりです。
はい。
  • バーコード
  • ブログ内検索
  • カウンター
  • アクセス解析
Copyright © 35歳からのC言語ゲームプログラミング All Rights Reserved.*Powered by NinjaBlog
Graphics By R-C free web graphics*material by 工房たま素材館*Template by Kaie
忍者ブログ [PR]