どうも多浪Fランぼっち底辺大学生です。
今回はpyhon(パイソン)で簡単なゲームを作成していこうと思います。
python初心者の方は見て損はないと思います( ^ω^)
作成するゲームの内容
「aとbが競争するのでどちらが先にゴールするかを当てるゲーム」を作成します
内容は以下の段階に分けて考えます。
- aとbのスタート地点は同じ
- ゴール地点を固定
- aとbを選択させる(同着予想の場合c)
- aとbが進む速さは特定の範囲内でランダムとする
- 途中経過を表示(簡易の文字 “>” , “@” を使用する)
- 1回進むごとに1秒処理に間を空ける
- 結果の判定・表示
参考にした書籍

今回参考にした書籍は「ゼロからやさしく始めるpython入門(クジラ飛行机 著)」です。
余談なのですが、わたくしがpythonを学ぶ際に最初に手にした参考書です。
完全入門向けで丁寧な構成になっており、初心者でも無理なく学べる一冊です。
個人的に「ゼロからやさしく始めるpyhon入門」と「progate(プロゲート)」の2つを利用することで、ある程度基礎が出来上がるはずです。
当参考書はこの記事で紹介するような簡易のゲームのほか、実際にキーボード操作などによるゲーム作成コードなども含まれており、充実した内容になっています。
初心者にやさしく・やる気を出させてくれる1冊です。
使用するライブラリ・関数
簡単なゲーム作成と言うことで難しい関数やライブラリは登場しません。
ライブラリ
今回使用するライブラリは2つです。
- random
- time
関数
関数は以下の6つです。
- from
- import
- print()
- input()
- while()
- if(),else
ゲームのソースコード
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 32 |
from random import randint from time import sleep a=0 b=0 goal=30 print("aとbどちらが先にゴールするかを当てるゲーム") you=input("どちらを選びますか?(同時ならc):") print("競争開始") while a<=goal and b<=goal: a+=a+randint(1,5) b+=b+randint(1,5) print("a:"+">"*a+"@") print("b:"+">"*b+"@") print("----------------------") sleep(1) if a>b: winner="a" if a<b: winner="b" if a==b: winner="c" if winner==you: print("勝利") else: print("敗北者じゃけぇ!!") |
実行結果
実行結果は以下の様になります(画像ですみません)。

「敗北者じゃけぇ!!」が出せなくて悔しいですね(笑)
こんな感じで表示されたらgood!!
少し解説
1・2行目はライブラリの中にある関数を読み込んでいます。
- from ライブラリ import 関数名
while(ループ)により、aまたはbのどちらかがgoalの値に達するまで繰り返します。
a+=a+randint(1,5)はaに格納されている値と乱数1~5を加算し変数aの値を更新していきます。
a=a+乱数
a=0 乱数を1の定数とすると
a=0+1 a=1
a=1+1 a=2
a=2+1 a=3
a=3+1 a=4
って感じですね。
- randint(x,y) : x~yにおける乱数
time(1)によりループ1巡が終わる際に1秒の間を空けます。
これを書くことで実行結果の表示処理(print())が高速でなくゆとりを持つことが出来ます。
プラスα
上記のソースコードをアレンジしてもう少ししっかりした内容にしたいと思います。
「もう少ししっかりした・・・」ってなんやねんって感じですけど、書いてイキます(汗)
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 32 33 34 35 36 37 38 39 40 41 42 43 |
from random import randint from time import sleep a=0 b=0 while True: try: goal=input("ゴールの値を入力:") goal=int(goal) True if Ture: break except: False while True: you=input("どちらが勝つ?.a or b:") if you!="a" or you!="b": False if you=="a" or you=="b": break print("競争開始") while a<=goal and b<=goal: a+=a+randint(1,5) b+=b+randint(1,5) print("a:"+">"*a+"@") print("b:"+">"*b+"@") sleep(1) if a>b: winner="a" if a<b: winner="b" if winner==you: print("勝利") else: print("敗北者じゃけぇ!!!") |
7~22行にかけて処理を追加(プラスα)してみました。
7~15行はinput()で数字以外を受け取った時に何度もループを繰り返すようになっています。
17~22行はinput()で「aかb」のどちらかを必ず選ばせるようにしました。