自動販売機



講師から一言
GUIの知識が少ない内は作れるものも限られてきますが、自動販売機という発想が秀逸です。お金を入れるとジュースが買えるようになっていて、if文を使ってお金が足りないとジュースが買えないロジックがおもしろいと思います。特に¥100と表示させるための工夫(お金 = int(お金[1:5]))が素晴らしいです。おつり計算のロジックをもう少し作りこみ、連続してジュースを買うことができる機能ができるようになれば、さらにレベルアップできます。

Pythonで記述したコード
import tkinter
import pygame
#ウィンドウ作成
ウィンドウ = tkinter.Tk()
ウィンドウ.title("自動販売機")
ウィンドウ.geometry("800x700")

#フラグ
フラグ=0

#効果音
pygame.init()
pygame.mixer.init()
効果音_商品落下=pygame.mixer.Sound("sound\商品落下.mp3")
効果音_コイン=pygame.mixer.Sound("sound\コイン.mp3")
効果音_お金を入れてください=pygame.mixer.Sound("sound\お金を入れてください.mp3")

#画像ファイル
自販機画像 = tkinter.PhotoImage(file="image\自販機.png")
ボタン画像 = tkinter.PhotoImage(file="image\ボタン.png")
コーラ画像 = tkinter.PhotoImage(file="image\コーラ.png")
コーラ_縦画像 = tkinter.PhotoImage(file="image\コーラ_縦.png")
お茶画像 = tkinter.PhotoImage(file="image\お茶.png")
お茶_縦画像 = tkinter.PhotoImage(file="image\お茶_縦.png")
ビール画像 = tkinter.PhotoImage(file="image\ビール.png")
ビール_縦画像 = tkinter.PhotoImage(file="image\ビール_縦.png")
自販機_コイン = tkinter.PhotoImage(file="image\自販機_コイン.png")

#キャンバス
キャンバス = tkinter.Canvas(ウィンドウ,width=800,height=700)
キャンバス.create_image(400,350,image=自販機画像)
キャンバス.place(x=0,y=0)

#変数
お金 = 100

#クリック時の操作
def クリックボタン_コーラ():
    global フラグ,お金
    お金=ラベル_硬貨表示["text"]
    if お金 != "----":
        お金 = int(お金[1:5])   
        会計 = お金 - 150
        if フラグ==1 and お金>=150:
            ラベル_商品投下["image"] = コーラ画像
            効果音_商品落下.play()
            ラベル_硬貨表示["text"] = "\\"+str(会計)
            ラベル_硬貨表示.place(x=429,y=411)
            if 会計<150:
                お金=100
                フラグ=0
        else:
            効果音_お金を入れてください.play()
    else:
        効果音_お金を入れてください.play()
        お金 = 100

def クリックボタン_お茶():
    global フラグ,お金
    お金=ラベル_硬貨表示["text"]
    if お金 != "----":
        お金 = int(お金[1:5])
        会計 = お金 - 140
        if フラグ==1 and お金>=140:    
            ラベル_商品投下["image"] = お茶画像
            効果音_商品落下.play()
            ラベル_硬貨表示["text"] = "\\"+str(会計)
            ラベル_硬貨表示.place(x=429,y=411)
            if 会計<150:
                お金=100
                フラグ=0
        else:
            効果音_お金を入れてください.play()
    else:
        効果音_お金を入れてください.play()
        お金 = 100

def クリックボタン_ビール():
    global フラグ,お金
    お金=ラベル_硬貨表示["text"]
    if お金 != "----":
        お金 = int(お金[1:5])
        会計 = お金 - 300
        if フラグ==1 and お金>=300:     
            ラベル_商品投下["image"] = ビール画像
            効果音_商品落下.play()
            ラベル_硬貨表示["text"] = "\\"+str(会計)
            ラベル_硬貨表示.place(x=429,y=411)
            if 会計<150:
                お金=100
                フラグ=0
        else:
            効果音_お金を入れてください.play()
    else:
        効果音_お金を入れてください.play()
        お金 = 100

def クリックボタン_コイン():
    global フラグ,お金
    フラグ=1
    if フラグ==1:
        効果音_コイン.play()
        ラベル_硬貨表示["text"] = "\\"+str(お金)
        ラベル_硬貨表示.place(x=429,y=411)
        ラベル_商品投下["image"] = ""
        お金+=100

#ボタン
ボタン_コーラ = tkinter.Button(ウィンドウ,image=ボタン画像,command =クリックボタン_コーラ)
ボタン_コーラ.place(x=233,y=245)
ボタン_お茶 = tkinter.Button(ウィンドウ,image=ボタン画像,command =クリックボタン_お茶)
ボタン_お茶.place(x=383,y=245)
ボタン_ビール = tkinter.Button(ウィンドウ,image=ボタン画像,command =クリックボタン_ビール)
ボタン_ビール.place(x=533,y=245)
ボタン_コイン = tkinter.Button(ウィンドウ,image=自販機_コイン,command =クリックボタン_コイン,bd=0)
ボタン_コイン.place(x=505,y=405)

#ラベル
ラベル_コーラ = tkinter.Label(ウィンドウ,image=コーラ_縦画像)
ラベル_コーラ.place(x=229,y=153)
ラベル_お茶 = tkinter.Label(ウィンドウ,image=お茶_縦画像)
ラベル_お茶.place(x=383,y=152)
ラベル_ビール = tkinter.Label(ウィンドウ,image=ビール_縦画像)
ラベル_ビール.place(x=525,y=168)
ラベル_商品投下 = tkinter.Label(ウィンドウ,font = ("system",24))
ラベル_商品投下.place(x=195,y=570)
ラベル_硬貨表示 = tkinter.Label(ウィンドウ,text ="----" ,font = ("system",18),bg="black",fg="red")
ラベル_硬貨表示.place(x=429,y=411)

#メインループ
ウィンドウ.mainloop()