闲来无事,做了个可以在做游戏点名的时候用的小程序,太简单,就不讲解了,分享如下:
# -*- coding: utf-8 -*-
"""
Created on Thu Oct 15 10:08:10 2020
@author: Zengda Bo
"""
import pygame
from pygame import *
import sys
import threading
import time
import random
pygame.init()
font = pygame.font.Font("C:/Windows/Fonts/simhei.ttf", 20)
StartRect = pygame.Rect(55, 160, 40, 40)
EndRect = pygame.Rect(105, 160, 40, 40)
is_start = False
name_list = []
f = open("./name.txt", encoding="utf-8")
lines = f.readlines()
for line in lines:
name_list.append(line.strip())
def main():
global is_start
screen = pygame.display.set_mode((200, 200))
pygame.display.set_caption("随机点名器")
DrawScreen(screen)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == MOUSEBUTTONDOWN:
pos_x, pos_y = event.pos
if StartRect.collidepoint(pos_x, pos_y) and is_start == False:
is_start = True
t1 = threading.Thread(target=StartSelect, args=[screen])#开支线
t1.start()
if EndRect.collidepoint(pos_x, pos_y) and is_start == True:
print("END")
is_start = False#停支线
if event.type == KEYDOWN:
if event.key == pygame.K_ESCAPE:
sys.exit()
def DrawScreen(screen):
screen.fill((255, 255, 255))
screen.fill((0, 0, 0), StartRect)
screen.fill((0, 0, 0), EndRect)
start = font.render("开始", True, (255, 0, 0))
end = font.render("停止", True, (255, 0, 0))
start_rect = start.get_rect()
end_rect = end.get_rect()
start_rect.center = StartRect.center
end_rect.center = EndRect.center
screen.blit(start, start_rect)
screen.blit(end, end_rect)
pygame.display.update()
def StartSelect(screen):
global is_start
print("START")
while True:
if is_start == False:
break
screen.fill((255, 255, 255), (0, 0, 200, 160))
temp = random.randint(0, len(name_list)-1)
name = name_list[temp]
font2 = pygame.font.Font("C:/Windows/Fonts/simhei.ttf", 50)
msg = font2.render(name, True, (0, 0, 255))
msg_rect = msg.get_rect()
msg_rect.center = (100, 100)
screen.blit(msg, msg_rect)
pygame.display.update()
time.sleep(0.01)
main()
注意要在py文件的同一目录放个name.txt,里面放名字,一行一个名字。
老师拿来给学生点名也是极好的哦(疯狂暗示)~~
网友评论