猫史档案馆


【Python作品分享】4142-单词拼写(总)【作业帖】

用户:心纳海心纳海查看:0 回复:0 评论:0 创建时间:2021-08-28T11:56:00


【作品展示】

center_image

 

【作品介绍】

...

 

【作品源代码】

import turtle
import random
import time
screen = turtle.Screen()
screen_width, screen_height = 600, 600
screen.setup(screen_width, screen_height)
screen.bgcolor("dark green")

with open("word.txt", "r", encoding="utf-8") as f:
    word_list = f.readlines()
    words = {}
    for item in word_list:
        word_cn, word_en = item.split()
        words[word_cn] = word_en

def random_word(words):
    w_cn = random.choice(list(words.keys()))
    w_en = words[w_cn]
    del words[w_cn]

    letter_info = {}
    num = 0
    for i in w_en:
        x = random.randint(-250, 250)
        y = random.randint(-250, 250)
        letter_info[i+str(num)] = [x, y]
        num += 1
    return w_cn,w_en,letter_info

pen = turtle.Pen()
pen.hideturtle()

def new_goto(x, y):
    pen.penup()
    pen.goto(x, y)
    pen.pendown()


res_str = ""


def flash_screen(w_cn, letter_info):
    screen.clear()
    screen.bgcolor("dark green")
    screen.tracer(0)
    new_goto(-screen_width//2+10, screen_height//2-30)
    pen.color("white")
    pen.write(w_cn, font=("FZY3JW.TTF", 20))
    new_goto(-screen_width//2+10, screen_height//2-50)
    pen.write(res_str, font=("FZY3JW.TTF", 20))
    
    for i in letter_info.keys():
        x,y = letter_info[i]
        new_goto(x, y)
        pen.color("gold")
        pen.write(i[0], font=("FZY3JW.TTF", 20, "bold"))


w_cn, w_en, letter_info = random_word(words)
flash_screen(w_cn, letter_info)

def if_in(x, y, pos):
    x_in = x >= pos[0] and x <= pos[0]+20
    y_in = y >= pos[1] and y <= pos[1]+20
    if x_in and y_in:
        return True
    else:
        return False
    
def judge(res, w_en):
    if res == w_en:
        print(w_en, "拼为", res, ":结果正确!")
    else:
        print(w_en, "拼为", res, ":结果错误!")


res_str = ""


def if_right(x, y):
    global res_str, w_cn, w_en, letter_info
    letters = list(letter_info.keys())
    new_goto(x, y)
    for i in letters: 
        letter_pos = letter_info[i]
        if if_in(x, y, letter_pos):
            res_str += i[0]
            pen.write("点中")
            time.sleep(0.5)
            pen.undo()
            del letter_info[i]
            flash_screen(w_cn, letter_info)
            screen.onclick(if_right)
            if len(letter_info) == 0:
                time.sleep(0.5)
                judge(res_str,w_en)
                if words:
                    res_str = ""
                    w_cn, w_en, letter_info = random_word(words)
                    flash_screen(w_cn, letter_info)
                    screen.onclick(if_right)
                else:
                    screen.clear()
                    screen.bgcolor("dark green")
                    new_goto(0, 0)
                    pen.write("测试结束", align="center", font=("FZY3JW.TTF", 40))

screen.onclick(if_right)




turtle.done()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页