Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

ゲーム作りに挑戦!

More than 1 year has passed since last update.

概要

プログラミングの練習のため、Pythonでゲームを作成してみました。
使用したライブラリは"pygame"です。

ライブラリの基本的な使い方は、以下を参考に作成しました。
Pygame - Pygameドキュメント 日本語訳

画面の作成・描画・制御、キーボード、マウスの入出力など、基本的な機能は詰まっています。

作成したゲーム

「COOL104」という昔からゲームセンターにあるゲーム…の基本部分のみ。
game.png

ルール

手札から、台札(画面上段のカード)と「マーク」か「数字」が同じカードをなるべく長く出していく、という単純なゲームです。

画面右側中段に、カードの使用状況(今出ている、まだ出ていない、もう出た)が表示されるので、どのカードが出る確率が高いかを考えつつ、終盤は全部出せるようにつながりを考えてカードを選択していきます。

詳細なルールは以下の外部サイトを参照ください。
COOL104ルール

本物は、手札がポーカーの役になると点数が加算され、、、などのルールがあるのですが、この点は実装しませんでした。

ソース

github

動作確認のためのコメントが入っていますが、ご了承ください。

考慮点

1つ目は開始時の手札の払い出しです。
手札カードをランダムに作成すると、最初からゲームオーバー(出せる手札がない)になる可能性があるので、ゲーム開始時には2枚以上手札カードが出せるようにしています。

もう1点は画面の描画回数です。
今回のアプリは、無限ループして画面を描画し、マウスのクリックイベントを待っています。回数が多いと、1クリックしたつもりが、次の画面描写でもクリックイベントを拾ってしまう、、、という事象がおきました。
そのため、1秒間に何回画面描写するかの設定をアナログ(設定を変えて感覚)で設定しました。

参考

Pythonを勉強するにあたっては以下の書籍を参考にしました。

ゲームを作りながら楽しく学べるPythonプログラミング

作ってみて思ったこと

ゲームオーバー後、いちいち画面を閉じて再度コマンド実行する必要があり、面倒。
上位にあたる画面を作成して呼び出しをしてあげたほうがよかったのかも、、と思いました。

とはいえ、初めてUIがあるものを作りましたが、ちゃんと動いてびっくりしました。

謝辞

汪さん、色々と相談にのっていただきまして、ありがとうございました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away