生徒作品(Python)

生徒作品を紹介します。



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 フラグ,お金
    if フラグ==1:
        ラベル_商品投下["image"] = コーラ画像
        効果音_商品落下.play()
        ラベル_硬貨表示["text"] = "\\50"
        ラベル_硬貨表示.place(x=429,y=411)
        フラグ=0
        お金=100
        
    else:
        効果音_お金を入れてください.play()

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

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



Pythonで記述したコード
import tkinter
import random

root=tkinter.Tk()
root.title("魚編の漢字クイズ")
root.minsize(800,550)
root.option_add("*font",("メイリオ",50))
    
#画像
背景=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.PhotoImage(file="image\ナマズ.png")
マグロ=tkinter.PhotoImage(file="image\マグロ.png")

#キャンバス作成、背景
canvas=tkinter.Canvas(width=800,height=550)
canvas.place(x=0,y=0)
canvas.create_image(400,275,image=背景)

#問題文ラベル
risuto=["鯏","鯆","鰻","鱏","蝦","鰈","鱪","蛸","鯰","鮪"]
kannzi=random.choice(risuto)

mozi=tkinter.Label(root,text=kannzi,font=("system",500))
mozi.place(x=325,y=180)


monndai=tkinter.Label(root,text="この漢字の読み方は?\n(ひらがなで書いてください)",font=("system",40))
monndai.place(x=20,y=20)

def ask_click():
    global kannzi
    kaitou=(entry.get())
    if kannzi=="鯏":
        if kaitou=="あさり":
            monndai.place(x=310,y=20)
            monndai["text"]="正解!"
        else:
            monndai.place(x=80,y=20)
            monndai["text"]="不正解!正解は「あさり」"
        canvas.create_image(400,390,image=アサリ)
        entry.place(x=10000,y=180)
        ask.place(x=10000,y=180)
        mozi.place(x=325,y=100)
    if kannzi=="鯆":
        if kaitou=="いるか":
            monndai.place(x=310,y=20)
            monndai["text"]="正解!"
        else:
            monndai.place(x=80,y=20)
            monndai["text"]="不正解!正解は「いるか」"
        canvas.create_image(400,390,image=イルカ)
        entry.place(x=10000,y=180)
        ask.place(x=10000,y=180)
        mozi.place(x=325,y=100)
    if kannzi=="鰻":
        if kaitou=="うなぎ":
            monndai.place(x=310,y=20)
            monndai["text"]="正解!"
        else:
            monndai.place(x=80,y=20)
            monndai["text"]="不正解!正解は「うなぎ」"
        canvas.create_image(400,390,image=ウナギ)
        entry.place(x=10000,y=180)
        ask.place(x=10000,y=180)
        mozi.place(x=325,y=100)
    if kannzi=="鱏":
        if kaitou=="えい":
            monndai.place(x=310,y=20)
            monndai["text"]="正解!"
        else:
            monndai.place(x=80,y=20)
            monndai["text"]="不正解!正解は「えい」"
        canvas.create_image(400,390,image=エイ)
        entry.place(x=10000,y=180)
        ask.place(x=10000,y=180)
        mozi.place(x=325,y=100)
    if kannzi=="蝦":
        if kaitou=="えび":
            monndai.place(x=310,y=20)
            monndai["text"]="正解!"
        else:
            monndai.place(x=80,y=20)
            monndai["text"]="不正解!正解は「えび」"
        canvas.create_image(400,390,image=エビ)
        entry.place(x=10000,y=180)
        ask.place(x=10000,y=180)
        mozi.place(x=325,y=100)
    if kannzi=="鰈":
        if kaitou=="かれい":
            monndai.place(x=310,y=20)
            monndai["text"]="正解!"
        else:
            monndai.place(x=80,y=20)
            monndai["text"]="不正解!正解は「かれい」"
        canvas.create_image(400,390,image=カレイ)
        entry.place(x=10000,y=180)
        ask.place(x=10000,y=180)
        mozi.place(x=325,y=100)
    if kannzi=="鱪":
        if kaitou=="しいら":
            monndai.place(x=310,y=20)
            monndai["text"]="正解!"
        else:
            monndai.place(x=80,y=20)
            monndai["text"]="不正解!正解は「しいら」"
        canvas.create_image(400,390,image=シイラ)
        entry.place(x=10000,y=180)
        ask.place(x=10000,y=180)
        mozi.place(x=325,y=100)
    if kannzi=="蛸":
        if kaitou=="たこ":
            monndai.place(x=310,y=20)
            monndai["text"]="正解!"
        else:
            monndai.place(x=80,y=20)
            monndai["text"]="不正解!正解は「たこ」"
        canvas.create_image(400,390,image=タコ)
        entry.place(x=10000,y=180)
        ask.place(x=10000,y=180)
        mozi.place(x=325,y=100)
    if kannzi=="鯰":
        if kaitou=="なまず":
            monndai.place(x=310,y=20)
            monndai["text"]="正解!"
        else:
            monndai.place(x=80,y=20)
            monndai["text"]="不正解!正解は「なまず」"
        canvas.create_image(400,390,image=ナマズ)
        entry.place(x=10000,y=180)
        ask.place(x=10000,y=180)
        mozi.place(x=325,y=100)
    if kannzi=="鮪":
        if kaitou=="まぐろ":
            monndai.place(x=310,y=20)
            monndai["text"]="正解!"
        else:
            monndai.place(x=80,y=20)
            monndai["text"]="不正解!正解は「まぐろ」"
        canvas.create_image(400,390,image=マグロ)
        entry.place(x=10000,y=180)
        ask.place(x=10000,y=180)
        mozi.place(x=325,y=100)


#回答欄
entry=tkinter.Entry(width=7,bd=4)
entry.place(x=240,y=400)
ask=tkinter.Button(text="決定",font=("system",50),command=ask_click)
ask.place(x=520,y=400)

#メインループ
root.mainloop()



Pythonで記述したコード
import tkinter

#マップの描画
def draw_map():
  for y in range(0,MAX_HEIGHT):
    for x in range(0,MAX_WIDTH):
      p = map_data[y][x]
      canvas.create_image(x*48+26,y*48+26,image=images[p])
      canvas.create_image(man_x*48+26,man_y*48+26,image=images[8],tag="man")
MAX_HEIGHT = 10
MAX_WIDTH = 20
key_flag = False
endd = False
#button_used
def button_used():
  canvas.delete("man_e")
  canvas.create_image(man_x*48+26,man_y*48+26,image=images[8],tag="man")
  map_data[8][7] = 0
  canvas.delete("all")
  draw_map()

#goal
def goal():
  canvas.delete("all")
  end = tkinter.Canvas(root,width=960,height=482,bg="black")
  end.pack()
  end.create_text(400,200,fill="white",font=("SYSTEM",20),
                       text="""ゴールおめでとう。

だが、君の戦いはまだ始まったばかりだ。

         ・・・・・・つづく?""")
  
#メインシステム
def key_down(e):
  global key
  key = e.keysym
def key_up(e):
  global key
  key = ""
def main_proc():
  global man_x,man_y,key_flag,endd
  if endd == False:
    #Up
    if key =="Up" and map_data[man_y-1][man_x] == 7 or key =="Up" and map_data[man_y-1][man_x] == 6 or key =="Up" and map_data[man_y-1][man_x] == 4 or key =="Up" and map_data[man_y-1][man_x] == 2 or key =="Up" and map_data[man_y-1][man_x] == 0:
      man_y = man_y - 1
    #Down
    if key =="Down" and map_data[man_y+1][man_x] == 4 or key =="Down" and map_data[man_y+1][man_x] == 2 or key =="Down" and map_data[man_y+1][man_x] == 0:
      man_y = man_y + 1
    #Right
    if key =="Right" and map_data[man_y][man_x+1] == 4 or key =="Right" and map_data[man_y][man_x+1] == 2 or key =="Right" and map_data[man_y][man_x+1] == 0 or key =="Right" and map_data[man_y][man_x+1] == 3 or key =="Right" and map_data[man_y][man_x+1] == 11 or key =="Right" and map_data[man_y][man_x+1] == 12:
      man_x = man_x +  1 
    #Left
    if key =="Left" and map_data[man_y][man_x-1] == 7 or key =="Left" and map_data[man_y][man_x-1] == 6 or key =="Left" and map_data[man_y][man_x-1] == 4 or key =="Left" and map_data[man_y][man_x-1] == 2 or key =="Left" and map_data[man_y][man_x-1] == 0:
      man_x = man_x - 1
    #skip
    if key =="space":
      man_x = 18
      man_y = 4
    #button
    if map_data[man_y][man_x] == 3:
      map_data[man_y][man_x] = 12
      canvas.delete("man")
      canvas.create_image(man_x*48+26,man_y*48+26,image=images[11],tag="man_e")
      root.after(300,button_used)
    #key収集
    if map_data[man_y][man_x] == 6:
      key_flag = True
      canvas.delete("man")
      canvas.create_image(man_x*48+26,man_y*48+26,image=images[4],tag="man_e")
    #goal
    if map_data[man_y][man_x] == 7:
      if key_flag == True:
        goal()
        endd = True 
    #grass_field
    if map_data[man_y][man_x] == 2 or map_data[man_y][man_x] == 0:
      canvas.delete("man")
      canvas.create_image(man_x*48+26,man_y*48+26,image=images[8],tag="man")
    #sand_field
    if map_data[man_y][man_x] == 4 or map_data[man_y][man_x] == 6 or map_data[man_y][man_x] == 7:
      canvas.delete("man")
      canvas.create_image(man_x*48+26,man_y*48+26,image=images[9],tag="man")
    root.after(200,main_proc)

#ウィンドウ作成
root = tkinter.Tk()
root.title("自由制作")
root.minsize(980,502)
root.bind("",key_down)
root.bind("",key_up)
#キャンバス作成
canvas = tkinter.Canvas(root,width=960,height=482)
canvas.place(x=10,y=10)
canvas.create_rectangle(0,0,960,482,fill="gray",tag="draw_field")

#画像データ読み込み
images=[tkinter.PhotoImage(file="images\\mapfield_grass.png"),
       tkinter.PhotoImage(file="images\\mapwall_grass.png"),
       tkinter.PhotoImage(file="images\\flower_grass.png"),
       tkinter.PhotoImage(file="images\\button_grass.png"),
       tkinter.PhotoImage(file="images\\mapfield_sand.png"),
       tkinter.PhotoImage(file="images\\mapwall_sand.png"),
       tkinter.PhotoImage(file="images\\mapkey_sand.png"),
       tkinter.PhotoImage(file="images\\mapgoal_sand.png"),
       tkinter.PhotoImage(file="images\\mapman_grass.png"),
       tkinter.PhotoImage(file="images\\mapman_sand.png"),
       tkinter.PhotoImage(file="images\\sea.png"),
        tkinter.PhotoImage(file="images\\button_grass_effect.png"),
        tkinter.PhotoImage(file="images\\button_grass_used.png"),
        tkinter.PhotoImage(file="images\\mapfield_grass_ojama.png")]
map_data = [
  [1,0,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],
  [1,2,0,1,1,5,7,4,5,5,5,6,4,4,4,5,4,4,4,5],
  [1,1,0,1,1,1,5,4,4,4,5,5,5,5,4,4,4,5,4,5],
  [1,0,0,0,1,1,5,4,5,4,4,4,4,5,5,5,5,5,4,5],
  [1,0,1,0,1,1,1,5,5,4,4,5,4,4,4,4,4,4,4,5],
  [1,2,1,0,0,1,1,1,5,5,4,5,5,5,5,4,5,5,4,5],
  [1,0,0,1,0,0,1,1,5,5,4,4,5,4,4,4,5,5,4,5],
  [10,0,0,1,1,0,1,1,5,5,5,5,4,4,5,5,4,5,4,5],
  [10,10,0,3,1,0,0,13,4,4,4,4,4,5,4,4,4,4,4,5],
  [10,10,10,10,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5]
  ]
man_x = 1
man_y = 0
key = ""
main_proc()
draw_map()
root.mainloop()