Pythonで学ぶ「プログラミング入門」YouTube動画

現代の教養「プログラミング」

読み・書き・そろばん・プログラミング。
プログラミングは特別な技能じゃないし・・・。

近頃人気のプログラミング言語「Python」で学ぶプログラミングの入門講座。

◆楽勝のプログラミング #1

スマホで今すぐプログラミング

◆楽勝のプログラミング #2

PCプログラミング環境を作る

◆楽勝のプログラミング #3

関数とモジュールを学ぶ

◆楽勝のプログラミング #4

コマンドラインで「ヒット&ブロー」

◆楽勝のプログラミング #5

ゲーム作りで学ぶ「tkinter」①

◆楽勝のプログラミング #6

ゲーム作りで学ぶ「tkinter」②

◆楽勝のプログラミング #7

ゲーム作りで学ぶ「tkinter」③

完成したコードを。

パイソンファイル(拡張子は「.py」)として保存し、コマンドプロンプトから「python ファイル名」で実行してください。
「exe化」していないので、pythonがインストールされていないマシンでは起動できません。

#####################
### ヒット&ブロー ###
#####################

### モジュールの呼び出し ###
import tkinter as Tk
import randomfrom tkinter 
import messagebox

### 異なる4つの数字を決める ###
KOTAE = random.sample(range(10),4)

### ボタンがクリックされたとき ###
def BUTTON_Click(event):
    global NUM
    NUM = event.widget["text"]
    if NUM in range(10):
        NUMBER_Print()
    elif NUM == "CLEAR":
        NUMBER_Clear()
    elif NUM == "ENTER":
        NUMBER_Judge()

### キーが押されたとき ###
def KEY_Press(event):
    global NUM
    NUM = event.keysym
    if NUM in ["0","1","2","3","4","5","6","7","8","9"]:
        NUMBER_Print()
    elif NUM == "BackSpace":
        NUMBER_Clear()
    elif NUM == "Return":
        NUMBER_Judge()

### 選択した数字を表示する ###
KAITOU = []
KURAI = 0
def NUMBER_Print():
    global NUM
    KAITOU.append(int(NUM))
    global KURAI
    if KURAI == 0:
        NUM0.set(NUM)
    elif KURAI == 1:
        NUM1.set(NUM)
    elif KURAI == 2:
        NUM2.set(NUM)
    elif KURAI == 3:
        NUM3.set(NUM)
    KURAI = KURAI + 1

### 数字をクリアする ###
def NUMBER_Clear():
    global KURAI
    KURAI = 0
    NUM0.set("*");NUM1.set("*");NUM2.set("*");NUM3.set("*")
    KAITOU.clear()

### ヒット&ブローを判定する ###
TURN = 0
def NUMBER_Judge():
    HIT = 0
    BLOW = 0
    global KURAI
    if KURAI >= 4:
        for i in range(4):
            if KAITOU[i] == KOTAE[i]:
                HIT = HIT + 1
            elif KAITOU[i] in KOTAE:
                BLOW = BLOW + 1
        global TURN
        TURN = TURN + 1
        KURAI = 0
        NUM0.set("*");NUM1.set("*");NUM2.set("*");NUM3.set("*")
    # 結果を表示する
    KEKKA.insert("1.0"," "+str(KAITOU[0:4])+" : Hit="+str(HIT)+" Blow="+str(BLOW)+" ("+str(TURN)+"回目)"+"\n")
    KAITOU.clear()
    # ゲームクリア
    if HIT == 4:
        messagebox.showinfo("Congratulations!",str(TURN)+"回目で正解です。")
        exit()

### 画面作成 ###
MADO = Tk.Tk()
MADO.title("Hit & Blow")
MADO.geometry("580x400")
#フレーム1
ANSW = Tk.Frame(MADO,relief="ridge",bd=3,bg="lightblue",width=200,height=50)
ANSW.place(x=10,y=10)
#フレーム2
WAKU = Tk.Frame(MADO,relief="ridge",bd=3,bg="lightblue",width=200,height=320)
WAKU.place(x=10,y=65)
#フレーム3
HABW = Tk.Frame(MADO,relief="groove",bd=3,width=350,height=375,bg="lavender")
HABW.place(x=220,y=10)
#ラベル
NUM0 = Tk.StringVar();NUM0.set("*")
LABE = Tk.Label(ANSW,textvariable=NUM0,font=("","20"),bg="lightblue")
LABE.place(x=30,y=10)
NUM1 = Tk.StringVar();NUM1.set("*")
LABE = Tk.Label(ANSW,textvariable=NUM1,font=("","20"),bg="lightblue")
LABE.place(x=65,y=10)
NUM2 = Tk.StringVar();NUM2.set("*")
LABE = Tk.Label(ANSW,textvariable=NUM2,font=("","20"),bg="lightblue")
LABE.place(x=100,y=10)
NUM3 = Tk.StringVar();NUM3.set("*")
LABE = Tk.Label(ANSW,textvariable=NUM3,font=("","20"),bg="lightblue")
LABE.place(x=135,y=10)
#ボタン
BTN = Tk.Button(WAKU,bg="blue",text="ENTER",font=("","12"),width=17,height=2)
BTN.place(x=10,y=250)
BTN = Tk.Button(WAKU,bg="red",text="CLEAR",font=("","12"),width=10,height=2)
BTN.place(x=70,y=190)
#数字ボタン
Px=[10,10,70,130,10,70,130,10,70,130]
Py=[190,130,130,130,70,70,70,10,10,10]
for i in range(10):
    BTN = Tk.Button(WAKU,bg="ivory",text=i,font=("","12"),width=4,height=2)
    BTN.place(x=Px[i],y=Py[i])
#結果を表示するテキスト
KEKKA = Tk.Text(HABW,bg="lavender",fg="green",font=("","15"))
KEKKA.pack()

#ボタンをバインドする
MADO.bind("<ButtonPress>",BUTTON_Click)
#キーボードをバインドする
MADO.bind("<KeyPress>",KEY_Press)

#ウィンドウのループ
MADO.mainloop()