Agile育成ブログ
未来を変える喜びを
Python

数当てゲーム


Warning: count(): Parameter must be an array or an object that implements Countable in /home/xs638785/agile-software.site/public_html/wp-content/plugins/rich-table-of-content/functions.php on line 490

ランダムな4つの数を作る

ランダムな値を作るときはrandomモジュールを使います。
手順としては以下の通りです。

  1. randomモジュールをインポート
  2. randint関数でランダムな値を取得して変数aに入れる
  3. 4つの場合リストを使うことで
  4. aを表示する
注意

printで表示するときa[0]+a+a+aとするとそれぞれの数字が足されるので数字を文字列に変換しないといけません

import random
a=[random.randint(0,9),random.randint(0,9),random.randint(0,9),random.randint(0,9)]

print(str[a0]+str[a1]+str[a2]+str[a3])

数字を入力する

4桁かどうか確認するためにはlen関数を使いましょう。

  1. input関数を使って入力を促す
  2. 入力されたものが4桁かどうかを判断する。4桁じゃない場合は繰り返す
  3. 入力されたものが数字かどうかを判断する
注意

inputで入力した値は文字列として認識されるので数字に変換してあげないといけません。

知識

isokのようなTrueやFalseを格納する変数をフラッグと呼びます。

b=int(input("数を入れてね"))

isok=False
while isok=False
   b=input("数を入れてね")
   if len(b)!: 4
      print("4桁の数字を入れてください")
   else:
      suuji=True
      for i in range(4):
         if (b[i]<"0" or "9"<b[i]):
            print("数字ではありません")
            suuji=False
            break
      if suuji:            #もしTrueだったらisokをTrueにする
          isok=True

結果を判定

まずは同じ桁に同じ数字があった場合を考えてみます。

hit=0
for i range(4):
   if a[i]==int(b[i])
      hit=hit+1

次に異なる桁に同じ数字があった場合を考えます。

b[j])==a[i]   bの1桁ごとの数字に対しaの4桁を確認
a[i]!=int(b[i])  ヒットではない
a[j]!=int(b[j])

blow=0
for j range(4):
   for i range(4):
      if (int(b[j])==a[i])and (a[i]!=int(b[i]))and(a[j]!=int(b[j])):
         blow=blow+1
         break

完成プログラム

#cording:utf-8
import random

a=random.randint(0,9)
print(a)

b=int(input("数を入れてね"))

if a==b:
   print(当たり)
else:
   print(はずれ)

ウィンドウ表示

tkinterというGUIツールキットを使うことでウィンドウを表示できます。
ここではrootという変数にtk TK()というウィンドウ作成のオブジェクトを格納し、rootを使って様々なウィンドウ操作ができます。

オブジェクト
メソッド

#cording:utf-8
import tkinter as tk

root:tk TK()
root:mainloop()

ウィンドウサイズを変更する場合はgeometryというメソッドを使います。

root.geometry("400x150")

ウィンドウにメッセージを配置
label1という変数にメッセージを配置するメソッドを格納しています。
フォントはHelvetica,サイズは14です。

フォント種類
  • Times
  • Helvetica
  • Courier
label1=tk.Label(root,text="数を入力してね",font=("Helvetica",14))

メッセージ位置

label1.place(x=20,y=20)

ウィンドウにタイトルを設定

root.title("数当てゲーム")

入力欄

入力欄を作り配置します。

editbox1=tk.Entry(width=4)
editbox1.place(x=120,y=120)

ボタンの配置

button1=tk.Button(root,text="チェック",font=("Helvetica",14))
button1,place(x=220,y=60)

ボタンの関数を作る

def ButtonClick()

ボタンを押して実行したときに上の関数が動くようにします
command=関数名で表します。

button1=tk.Button(root,text="チェック",font=("Helvetica",14),command=ButtonClick)

メッセージを表示

import tkinter massagebox as tmsg
tmsg.showinfo("タイトル","表示したい文字")
tkinterのオブジェクト

TK()
messagebox
Text

messageboxの関数
  • showinfo

履歴の表示

履歴欄の表示

rirekibox=tk.Text(root,font=("Helvetica",14))
rirekibox.place(x=400,y=0,width=200,height=400)

insertを使ってテキストボックスに文字を追加する
下に表示させていくにはtk.ENDを使用します

rirekibox.insert(tk.END,b+"/H:"+str(hit)+" B:"+str(blow)+"\n")

You cannot copy content of this page