你只需要创建一个名为danci的文件即可,不用任何的后缀名
#导入模块sys和pygame
import random
import sys
import pygame
class neirong(pygame.sprite.Sprite):
def __init__(self, screen,wenzi,x,y):
pygame.sprite.Sprite.__init__(self)
"""初始化按钮的属性"""
self.screen = screen
self.screen_rect = screen.get_rect()
# 设置按钮的尺寸和其他属性
self.width, self.height = 200, 50
self.weizhi1 = x
self.weizhi2 = y
#颜色
self.button_color = (0, 255, 0)
#字体颜色
self.text_color = ('red') #(255, 255, 255)
#字体设置
#self.font = pygame.font.SysFont('MingLiu', 32)
font = pygame.font.match_font('fangsong')
self.font = pygame.font.Font(font, 50)
#pygame.font.SysFont('幼圆', 50)
# 创建按钮的rect对象,并使其居中
#按钮创建
#float(randint(10, 300))
#对应着上面的那个10,150
##self.rect.x = 50
#self.rect.y = 50
self.wenzi = wenzi
#i = 0
# 按钮的标签只需创建一次
#这个东西非常重要,它创建的是让这个函数变成全局变量
#self.prep_msg()
#def prep_msg(self):
#self.msg_image_rect.x = 50
#self.msg_image_rect.x = 100
def draw_button(self):
if self.weizhi2 > 600:
self.kill()
self.rect = pygame.Rect(self.weizhi1, self.weizhi2, self.width, self.height)
"""将msg渲染为图像,并使其在按钮上居中"""
self.msg_image = self.font.render(self.wenzi, True, self.text_color)
# self.button_color)
self.msg_image_rect = self.msg_image.get_rect()
self.msg_image_rect.centerx = self.rect.centerx
self.msg_image_rect.centery = self.rect.centery
# 绘制一个用颜色填充的按钮,再绘制文本
#fill是颜色填充
#self.screen.fill(self.button_color, self.rect)
#blit是绘画
self.screen.blit(self.msg_image, self.msg_image_rect)
return self.weizhi2
def re(file):
'''该函数(file)
return 返回的是汉字列表'''
import re
#这个是去除掉换行符之后的
wenzi1 = []
#这个是只有汉字的
wenzi2 = []
with open(file, 'r', encoding='utf-8') as f:
for ann in f.readlines():
ann = ann.strip('\n') # 去除文本中的换行符
wenzi1.append(ann)
# ann = re.findall('^ ((?![\u4e00-\u9fa5]).) *', ann)
ann = re.findall('[^\u4e00-\u9fa5]', ann)
ann = "".join(ann)
wenzi2.append(ann)
return wenzi2
def re1(file):
'''该函数(file)
return 返回的是汉字列表'''
import re
#这个是去除掉换行符之后的
wenzi1 = []
#这个是只有汉字的
wenzi2 = []
with open(file, 'r', encoding='utf-8') as f:
for ann in f.readlines():
ann = ann.strip('\n') # 去除文本中的换行符
#ann = re.findall('[\u4e00-\u9fa5]', ann)
ann = "".join(ann)
wenzi1.append(ann)
return wenzi1
class Scoreboard():
"""显示得分信息的类"""
def __init__(self, screen, score):
"""初始化显示得分涉及的属性"""
self.screen = screen
self.screen_rect = screen.get_rect()
#self.ai_settings = ai_settings
self.score = score
# 显示得分信息时使用的字体设置
self.text_color = (30, 30, 30)
self.font = pygame.font.SysFont(None, 48)
# 准备初始得分图像---其实就是全局变量的函数
self.prep_score()
def prep_score(self):
"""将得分转换为一幅渲染的图像"""
score_str = str(self.score)
self.score_image = self.font.render(score_str, True, self.text_color,
"white")
# 将得分放在屏幕右上角
self.score_rect = self.score_image.get_rect()
self.score_rect.right = self.screen_rect.right - 20
self.score_rect.top = 20
def show_score(self):
"""在屏幕上显示得分"""
self.screen.blit(self.score_image, self.score_rect)
def pop_up_box():
"""
使用tkinter弹出输入框输入数字, 具有确定输入和清除功能, 可在函数内直接调用num(文本框的值)使用
"""
import tkinter
def inputint():
nonlocal num
try:
#这个是用来远程接受数据的
num = var.get().strip()
#num = int(var.get().strip())
print("好的,今天我们从第" + str(num) + "开始背诵")
root.quit()
except:
num = 'Not a valid integer.'
def inputclear():
nonlocal num
var.set('')
num = ''
num = 0
root = tkinter.Tk(className='背单词') # 弹出框框名
root.geometry('270x60') # 设置弹出框的大小 w x h
var = tkinter.StringVar() # 这即是输入框中的内容
#var.set('Content of var') # 通过var.get()/var.set() 来 获取/设置var的值
entry1 = tkinter.Entry(root, textvariable=var) # 设置"文本变量"为var
entry1.pack() # 将entry"打上去"
btn1 = tkinter.Button(root, text='昨天背诵', command=inputint) # 按下此按钮(Input), 触发inputint函数
btn2 = tkinter.Button(root, text='清除', command=inputclear) # 按下此按钮(Clear), 触发inputclear函数
# 按钮定位
btn2.pack(side='right')
btn1.pack(side='right')
# 上述完成之后, 开始真正弹出弹出框
root.mainloop()
return num
class play():
'''使用的时候直接play(。。。。。).run_game()'''
'''这个里面的所以参数如果自己没有输入值的
话那么就都是默认的了,默认的界面尺寸就是800,600....
'''
'''biao = "默认标题",x = 800,y = 600,beijin = '''
def __init__(self,biao = "klk",x = 800,y = 600,beijin = "green",ii = 0):
#界面标题
self.biao = biao
#界面尺寸
self.x = x
self.y = y
self.screen_chicun = self.x,self.y
#界面颜色
self.beijin = beijin
#就出现一个单词
self.ii = ii
self.iiii = 0
def run_game(self):
pygame.init() # 初始化背景设置
screen = pygame.display.set_mode((self.screen_chicun))
pygame.display.set_caption(self.biao)#('blue shy')
bg_color = self.beijin # 设置背景色,天青蓝
#就出现一个单词
wenzi = re("danci")
x = random.randint(0, 800)
y = 50
i = 0
ii = self.ii
clock = pygame.time.Clock()
score = 0
iiii = 0
while True:
clock.tick(500)
# 每次循环时都重绘屏幕
screen.fill(bg_color)
#就出现一个单词
weizhi2 = neirong(screen, wenzi[ii], x, y).draw_button()
i = i + 1
if i == 4:
y = y + 5
i = 0
#ii,score,iiii = event(ii,score,iiii)
for event in pygame.event.get():
if event.type == pygame.QUIT: # 检测玩家单击游戏窗口关闭按钮
print("你今天已经背到了第" + str(ii) + "个单词")
print("上面这些就是你不会的单词了,要想办法再背一下")
print("你要记得今天你背到了多少页")
print(iiii)
sys.exit() # 退出游戏
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
wenzi1 = re1("danci")
print(wenzi1[ii])
ii = ii + 1
score = score + 1
if ii > len(wenzi1) - 1:
ii = 0
iiii = iiii + 1
Scoreboard(screen,score).show_score()
if weizhi2 > 600:
x = random.randint(0, 800)
y = 50
ii = ii + 1
if ii > len(re("danci")) - 1:
ii = 0
score = score + 1
# 让最近绘制的屏幕可见
pygame.display.flip()
if __name__ == "__main__":
shuru = pop_up_box()
play(shuru).run_game()