パックマン風ゲームにおける当たり判定について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
purin52002
記事: 235
登録日時: 2年前
連絡を取る:

Re: パックマン風ゲームにおけるワープ通路の実装の仕方がわからない。

#31

投稿記事 by purin52002 » 1年前

コードを載せるのはいいんですけど、「お疲れ様です^^」としかコメントが返せません^^;
コードを載せるだけなら日記とかに進捗報告として載せるというのはどうですか?
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

アバター
keito94
記事: 264
登録日時: 2年前
連絡を取る:

Re: パックマン風ゲームにおけるワープ通路の実装の仕方がわからない。

#32

投稿記事 by keito94 » 1年前

purin52002 さんが書きました:コードを載せるのはいいんですけど、「お疲れ様です^^」としかコメントが返せません^^;
コードを載せるだけなら日記とかに進捗報告として載せるというのはどうですか?
今、当サイトに書かれてあるコードを参考に、衝突判定を使わない当たり判定を書いたのですが、
なかなか当たり判定が認識されず、どうすればいいのかわからないという質問をしようと思っていたんです…。
日記に載せるべき内容ならすでに乗せてますよ…。
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

ISLe
記事: 2641
登録日時: 8年前
連絡を取る:

Re: パックマン風ゲームにおけるワープ通路の実装の仕方がわからない。

#33

投稿記事 by ISLe » 1年前

ゲームプログラミングの館の移動サンプルプログラムは方向転換がブロック単位です。
ちなみにわたしがNo.8に書いたパックマンの動きとは合致しません。

仕切り直しが発生しているのでしょうか。
現状どういう状況なのでしょう。

「パックマン」とはパックマンではなく、とにかく目に付いたコードを切り貼りしてそれっぽく動くことを目指すところのものなのでしょうか。
そもそもkeito94さんが何をもって「それっぽい」と判断されるのか分かりません。

なにがなんだか。

アバター
keito94
記事: 264
登録日時: 2年前
連絡を取る:

Re: パックマン風ゲームにおけるワープ通路の実装の仕方がわからない。

#34

投稿記事 by keito94 » 1年前

ISLe さんが書きました: 現状どういう状況なのでしょう。
No.28で書いたとおり、壁ですり抜けて困っています。
どうしたらサンプルコードみたいにパックマンが壁で止まってくれるか?
それを考えていたところです。
ISLe さんが書きました: そもそもkeito94さんが何をもって「それっぽい」と判断されるのか分かりません。
パックマンが本家パックマンみたいな動きをすることです。
でも、なかなか大変ですね…。
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

アバター
purin52002
記事: 235
登録日時: 2年前
連絡を取る:

Re: パックマン風ゲームにおけるワープ通路の実装の仕方がわからない。

#35

投稿記事 by purin52002 » 1年前

失礼しました。
余計なことを言って質問者さんも回答者さんも混乱させてしまいました^^;
本家パックマンみたいな動きですと、私が投稿した方法とは合致しないかもしれません。
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

ISLe
記事: 2641
登録日時: 8年前
連絡を取る:

Re: パックマン風ゲームにおけるワープ通路の実装の仕方がわからない。

#36

投稿記事 by ISLe » 1年前

keito94 さんが書きました:でも、なかなか大変ですね…。
それは、最初にどうするか・どうしたいか決めずに、目に付いたコードを適当に切り貼りしているからですよ。

きちんと最初に決めたことに必要な部分だけを参考にしたり、最初に決めたことに必要な改変をしたり、中身を理解して軸がブレないようにやればもっと楽にできるはずです。

混ぜたらダメなコードを混ぜて使って絶対にうまくいくわけがない。

あと、ブロックの当たり判定部分について、keito94さんは過去のトピでソースファイルをzipで添付したことがあるだけでまだいちども説明してない。
わたしが「パックマン風にはまったくの不向き」と書いた部分のこと。
そこは現在どうなっているのか。
いまもそのままなのであればうまくいかないのが当然だと思うのですが。

まぜるなきけん。
最後に編集したユーザー ISLe on 2017年7月28日(金) 17:49 [ 編集 1 回目 ]

アバター
keito94
記事: 264
登録日時: 2年前
連絡を取る:

Re: パックマン風ゲームにおけるワープ通路の実装の仕方がわからない。

#37

投稿記事 by keito94 » 1年前

ISLeさん、あなたがそう言うなら、ソースコードを公開しますね。
purinさんが出した方法では、本人も言っているとおり不向きかもしれませんが…。
当たり判定がバグバグであることも了承していただければと…。
本家パックマンに近い当たり判定への鍵もあったら教えてください。
添付ファイル
Question.zip
(3.45 KiB) ダウンロード数: 57 回
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

ISLe
記事: 2641
登録日時: 8年前
連絡を取る:

Re: パックマン風ゲームにおけるワープ通路の実装の仕方がわからない。

#38

投稿記事 by ISLe » 1年前

コンテナを使った当たり判定は削除されていますね。
#コンテナ自体は残ってるけど。

どうしてブロックをすり抜けてしまうのか、については基本すぎるので、ちゃんとデバッグしてください、としか言えません。

ISLe
記事: 2641
登録日時: 8年前
連絡を取る:

Re: パックマン風ゲームにおけるワープ通路の実装の仕方がわからない。

#39

投稿記事 by ISLe » 1年前

keito94 さんが書きました:本家パックマンに近い当たり判定への鍵もあったら教えてください。
これまでの投稿に書いたことでは足りませんか?

ちゃんと読めば、パックマンには、いわゆる壁との当たり判定も、このトピの主題であるワープ判定も、もともと必要ないことが分かると思うんですが。

アバター
keito94
記事: 264
登録日時: 2年前
連絡を取る:

Re: パックマン風ゲームにおける当たり判定について

#40

投稿記事 by keito94 » 1年前

ISLeさんの親切な言葉で、ワープトンネルは画面端を接続させることで実装させるということはわかりました。

コード:

 # ワープ判定。
        if self.fpx == 0.0:
            self.fpx = 640.0
        if self.fpx == 640.0:
            self.fpx = 0.0
        if self.fpy == 0.0:
            self.fpy = 480.0
        if self.fpy == 480.0:
            self.fpy = 0.0

ですが今のままでは問題がありそうです…。
改善案はありませんか?
ISLe さんが書きました: パックマンの迷路は、8x8のチップ画像で構成されています。
直線と角が数パターンあり、それらの組み合わせです。

パックマンの迷路のチップ画像は、壁がチップの中央を通るように描かれています。
パックマンは(モンスターも)迷路の壁の描かれたチップの半分といつも重なっています。
曲がり角に達するより先に、重なっているチップの種類で曲がり角かどうか容易に判定できるというわけです。
でも、画像を何個作ればいいのかわからないので、マップチップのサンプルを自作でください。
ということは、と思い、今問題となっている部分を修正しています。
そのマップを処理するためにマップエディターを作ろうと思ってますので頑張ります!!
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

ISLe
記事: 2641
登録日時: 8年前
連絡を取る:

Re: パックマン風ゲームにおける当たり判定について

#41

投稿記事 by ISLe » 1年前

keito94 さんが書きました:でも、画像を何個作ればいいのかわからないので、マップチップのサンプルを自作でください。
何でそんなに上から目線なんですか。
あなたの指示で動く義務はないのでお断りします。

ネットで検索すればパックマンのスクリーンショットくらい簡単に見付かるでしょうに。


他所で、パックマンはパックマンとは異なる、というのを肯定されてますよね。

本家パックマンと異なる本家パックマンみたいなもの、というのは難解で理解が追い付きません。

本家パックマンのことなら分かるんですけどね。

アバター
keito94
記事: 264
登録日時: 2年前
連絡を取る:

Re: パックマン風ゲームにおける当たり判定について

#42

投稿記事 by keito94 » 1年前

ISLe さんが書きました: 他所で、パックマンはパックマンとは異なる、というのを肯定されてますよね。

本家パックマンと異なる本家パックマンみたいなもの、というのは難解で理解が追い付きません。

本家パックマンのことなら分かるんですけどね。
ごめんなさいパックマン風というのはパックマンクローンという意味でした…。
訂正させてください…。
オフトピック
keito94 さんが書きました: でも、画像を何個作ればいいのかわからないので、マップチップのサンプルを自作でください。
ああ、怠惰だ~、怠惰怠惰怠惰怠惰~!!
自分で作っておきながら製作依頼をしてしまった私の怠惰をお許しくださいませぇ~!
最後に編集したユーザー keito94 on 2017年7月29日(土) 17:21 [ 編集 1 回目 ]
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

ISLe
記事: 2641
登録日時: 8年前
連絡を取る:

Re: パックマン風ゲームにおける当たり判定について

#43

投稿記事 by ISLe » 1年前

クローンの意味分かってます?
パックマンを目指していると言ったり目指していないと言ったりあげくにクローン。
支離滅裂。

クローン作るのを手伝って欲しいならオリジナルがどうなっているか観察して分かることをすべて具体的に発表してください。
いまのところそれはkeito94さんでなくわたしがやっている。
keito94さんが自分からは何もしないから支離滅裂なのですよ。

オフトピック
keito94さんは回答者をどんなふうに見ているのだろうか。
自分と同じ下手の横好き(!)が集まっているとでも思っているのだろうか。

アバター
keito94
記事: 264
登録日時: 2年前
連絡を取る:

Re: パックマン風ゲームにおける当たり判定について

#44

投稿記事 by keito94 » 1年前

ISLe さんが書きました:クローンの意味分かってます?
パックマンを目指していると言ったり目指していないと言ったりあげくにクローン。
支離滅裂。
クローンの意味すらわからなかった…。ごめんなさい。さっきのクローン発言やパックマンを目指していない発言は取り消しとさせてください。
とにかくパックマンっぽいゲームを目指しているんですけど、ボクの頭の中が右往左往してしまって…。
ボクが今考えていることを順序立てて説明しますね…。
①テトリスがおもったよりも難しそうだったからパックマンっぽいゲームを作ろうと考えた。
②マップ表示と、当たり判定は一通りできた。
③ワープトンネルの実装をしようとしたが…
④ワープ判定をするマップチップや、コンテナは使わないと指摘された。
⑤曲道がちゃんと実装されてないと事に気づき、色々聞いてみたところ衝突判定は関係ないよと言われた。
⑥今はパックマンの仕様に合うよう様々な方面で悪戦苦闘中…。(←今ここ)
オフトピック
回答者さんはちゃんと知識などがある方だと思ってますよ…。
下手の横好きだなんてとんでもない。
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

ISLe
記事: 2641
登録日時: 8年前
連絡を取る:

Re: パックマン風ゲームにおける当たり判定について

#45

投稿記事 by ISLe » 1年前

オフトピック
keito94 さんが書きました:回答者さんはちゃんと知識などがある方だと思ってますよ…。
下手の横好きだなんてとんでもない。
そういうことでなくて…
keito94さんは回答者を、問題解決する方法を教えてくれる先生じゃなくて、作りたいものを一緒に作る仲間みたいに見てるんじゃないだろうかってことなんですけどね。

あと、下手の横好きってのは知識や技術のありなしでなくて、本物かどうかってことですよ。

アバター
keito94
記事: 264
登録日時: 2年前
連絡を取る:

Re: パックマン風ゲームにおける当たり判定について

#46

投稿記事 by keito94 » 1年前

ISLe さんが書きました: keito94さんは回答者を、問題解決する方法を教えてくれる先生じゃなくて、作りたいものを一緒に作る仲間みたいに見てる
いいえ、そう考えてないですよ!!
回答者は、解決方法を教えてくれてると思います!!

ところで、質問ですが、今までの書き込みをよく読んで、パックマンの仕様に合うように変更しているのですが…。
座標が256以上になる部分は反対側に表示されます。
どうやって、32x32のキャラを反対側に表示するのかがわかりません。
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

ISLe
記事: 2641
登録日時: 8年前
連絡を取る:

Re: パックマン風ゲームにおける当たり判定について

#47

投稿記事 by ISLe » 1年前

オフトピック
keito94 さんが書きました:
ISLe さんが書きました: keito94さんは回答者を、問題解決する方法を教えてくれる先生じゃなくて、作りたいものを一緒に作る仲間みたいに見てる
いいえ、そう考えてないですよ!!
回答者は、解決方法を教えてくれてると思います!!
例えばの話ですが、回答者の中にバンダイナムコから公式にリリースされているパックマンの開発に関係したひととかがいて、そういうひとに向かって「あなたの考え方のコードください」とか「あなたがマップチップ自作してください」とか平然と言うのは、とてつもなくあつかましいことだと思うんですよ。

回答者を下に見てる意識があってもなくても、あつかましいことには違いはないですけどね。
keito94 さんが書きました:どうやって、32x32のキャラを反対側に表示するのかがわかりません。
反対側に表示すればいいだけですよ。

でも原作と同じ形の迷路なら反対側に同時に表示される状況にはならないですが。
けっきょくどこまでパックマンに寄せることになってるのでしょうか。
そこらへん、はっきりしてください。

アバター
keito94
記事: 264
登録日時: 2年前
連絡を取る:

Re: パックマン風ゲームにおける当たり判定について

#48

投稿記事 by keito94 » 1年前

どうすればいいのか、
実は頭のなかで考えてました。
画面端に来たら、反対に表示させる…。
こうでしょうか?

コード:

        # パックマンを反対側へ表示させる。
        if self.rect.x == 640:
            self.rect.x = 0
        if self.rect.x == 0:
            self.rect.x = 640
        if self.rect.y == 480:
            self.rect.y = 0
        if self.rect.y == 0:
            self.rect.y = 480
…でも、パックマンが反対側へ移動しません。
どうしたらいいのでしょうか?
でも原作と同じ形の迷路なら反対側に同時に表示される状況にはならないですが。
そうですよね…。
けっきょくどこまでパックマンに寄せることになってるのでしょうか。
そこらへん、はっきりしてください。
端部は違えど、なるべく本家に近づけたい…。
そう思っています。
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

アバター
keito94
記事: 264
登録日時: 2年前
連絡を取る:

Re: パックマン風ゲームにおける当たり判定について

#49

投稿記事 by keito94 » 1年前

自分でデバッグをして、なんか足りないなと思い、もうひと押ししたところ、ワープトンネルの実装ができました。
これで、当初の目標は達成できたのですが、ファイルの読み込みで今悪戦苦闘を強いられているんだ!!

コード:

    def update(self):
        pressed_key = pygame.key.get_pressed()

        if pressed_key[K_RIGHT]:
            self.walk_flag = True
            self.temp_key = Bit_RIGHT
        if pressed_key[K_LEFT]:
            self.walk_flag = True
            self.temp_key = Bit_LEFT
        if pressed_key[K_UP]:
            self.walk_flag = True
            self.temp_key = Bit_UP
        if pressed_key[K_DOWN]:
            self.walk_flag = True
            self.temp_key = Bit_DOWN

        # パックマンを反対側へ表示させる。
        if self.rect.x >= 608:
            self.fpx = 0.0
        elif self.rect.x <= 0:
            self.fpx = 608.0
        elif self.rect.y >= 448:
            self.fpy = 0.0
        elif self.rect.y <= 0:
            self.fpy = 448.0
        else:
            pass

        self.Move()

        self.dir_change()

        # self.rectを更新するついでに整数座標に戻します。
        self.rect.x = int(self.fpx)
        self.rect.y = int(self.fpy)
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

アバター
keito94
記事: 264
登録日時: 2年前
連絡を取る:

Re: パックマン風ゲームにおける当たり判定について

#50

投稿記事 by keito94 » 1年前

ふうん、マップデータファイル読み込みの件は一時はどうなるかと思ったけど、
なんとか頑張って読み込めるようにできた…。
一応解決とさせてください。
オフトピック
ここまで質問に手間取ったのは自分の傲慢さが、あると思う…。
今から傲慢な態度を改めないとな…。
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

返信

“C言語何でも質問掲示板” へ戻る