pygame屏幕中的随机数字

时间:2014-02-17 17:03:00

标签: python-2.7 random tkinter pygame

在这段代码中,我使用pygame为七个正弦波设置动画,然后在屏幕上显示它们

import pygame
import time
import math
# Some config width height settings
canvas_width=1308
canvas_height=720
canvas_s=1004
# Just define some colors we can use
rojo=pygame.Color(255,0,0)
verde=pygame.Color(0,255,0)
azul=color=pygame.Color(0,0,255)
amarillo=pygame.Color(255,255,0,0)
marron=color=pygame.Color(85,65,0)
morado=pygame.Color(255,0,255)
naranja=pygame.Color(255,128,0)
lin=pygame.Color(255,255,255)
background_color=pygame.Color(0,0,0)

pygame.init()
# Set the window title
pygame.display.set_caption("Monitor Signos Vitales")
# Make a screen to see
screen=pygame.display.set_mode((canvas_width,canvas_height))
screen.fill(background_color)
# Make a surface to draw on
surface=pygame.Surface((canvas_width,canvas_s))
surface.fill(background_color)

# Simple main loop
running=True
while running:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            running=False

    # Redraw the background and some guide lines
    surface.fill(background_color)
    pygame.draw.line(surface, lin, (0, 90), (1004, 90))
    pygame.draw.line(surface, lin, (0, 180), (1004, 180))
    pygame.draw.line(surface, lin, (0, 270), (1004, 270))
    pygame.draw.line(surface, lin, (0, 360), (1004, 360))
    pygame.draw.line(surface, lin, (0, 450), (1004, 450))
    pygame.draw.line(surface, lin, (0, 540), (1004, 540))
    pygame.draw.line(surface, lin, (0, 630), (1004, 630))
    pygame.draw.line(surface, lin, (1004, 0), (1308, 720))
    pygame.draw.line(surface, lin, (1004, 180), (1308, 180))
    pygame.draw.line(surface, lin, (1004, 360), (1308, 360))
    pygame.draw.line(surface, lin, (1004, 540), (1308, 540))

    # Update sine wave
    frecuency=2;frecuency0=4;frecuency1=8;frecuency2=16;frecuency3=5;frecuency4=10
    frecuency5=15 
    amplitude=30 # in pixels
    speed=2
    for x0 in range(0,canvas_s):
        y0=int((canvas_height/2)+amplitude*math.sin(frecuency*((float(x0)/canvas_s)*    (2*math.pi)+(speed*time.time()))+270)-270)
        surface.set_at((x0,y0),amarillo)
    for x1 in range(0,canvas_s):
        y1=int((canvas_height/2)+amplitude*math.sin(frecuency0*((float(x1)/canvas_s)*(2*math.pi)+(speed*time.time()))+180)-180)
        surface.set_at((x1,y1),verde)
    for x2 in range(0,canvas_s):
        y2=int((canvas_height/2)+amplitude*math.sin(frecuency1*((float(x2)/canvas_s)*(2*math.pi)+(speed*time.time()))+90)-90)
        surface.set_at((x2,y2),naranja)
    for x3 in range(0,canvas_s):
        y3=int((canvas_height/2)+amplitude*math.sin(frecuency2*((float(x3)/canvas_s)*(2*math.pi)+(speed*time.time()))))
        surface.set_at((x3,y3),azul)
    for x4 in range(0,canvas_s):
        y4=int((canvas_height/2)+amplitude*math.sin(frecuency3*((float(x4)/canvas_s)*(2*math.pi)+(speed*time.time()))-90)+90)
        surface.set_at((x4,y4),rojo)
    for x5 in range(0,canvas_s):
        y5=int((canvas_height/2)+amplitude*math.sin(frecuency4*((float(x5)/canvas_s)*(2*math.pi)+(speed*time.time()))-180)+180)
        surface.set_at((x5,y5),marron)
    for x6 in range(0,canvas_s):
        y6=int((canvas_height/2)+amplitude*math.sin(frecuency5*((float(x6)/canvas_s)*(2*math.pi)+(speed*time.time()))-270)+270)
        surface.set_at((x6,y6),morado)

    # Put the surface we draw on, onto the screen
    screen.blit(surface,(0,0))
    # Show it.
    pygame.display.flip()

在这段代码中,我生成了四个随机数,并在屏幕上显示它们,感谢@falsetru

from Tkinter import *
import math
from random import randrange

number=Tk()
number.geometry("1308x720")
number.config(bg="black")
ECG=randrange(0,1000);SP=randrange(0,1000);PLES=randrange(0,1000);show=randrange(0,1000)
c1=StringVar();c2=StringVar();c3=StringVar();c4=StringVar()
c1.set(ECG);c2.set(SP);c3.set(PLES);c4.set(show)
valor_c1=Label(number,textvariable=c1,width=int(c1.get())//10,height=1,fg="red",anchor="ne",bg="black",font=('Times',60)).grid(row=0,column=2, sticky=E)
valor_c2=Label(number,textvariable=c2,width=int(c2.get())//10,height=1,fg="red",anchor="ne",bg="black",font=('Times',60)).grid(row=0,column=2, sticky=E,pady=84)
valor_c3=Label(number,textvariable=c3,width=int(c3.get())//10,height=1,fg="red",anchor="ne",bg="black",font=('Times',60)).grid(row=0,column=2, sticky=E)
valor_c4=Label(number,textvariable=c4,width=int(c4.get())//10,height=1,fg="red",anchor="ne",bg="black",font=('Times',60)).grid(row=0,column=2, sticky=E,pady=84)
number.grid_columnconfigure(2, weight=1)
number.mainloop()

现在,我需要做的是组合两个程序,因为第一个用pygame做,第二个用tkinter做。 然后,我的正式问题是:¿如何组合第一个代码和第二个代码? 任何帮助都很受欢迎

1 个答案:

答案 0 :(得分:1)

要在屏幕上绘制一些文字,您可以使用pygame的字体模块。

#initialization of font module and creating a font to draw with
pygame.font.init()
fontdir = pygame.font.match_font('TimesNewRoman', False, False)
myfont = pygame.font.Font(fontdir,16)

#creating the random list and their corresponding surfaces
random_list = [random.randrange(0,1000) for x in range(5)]
text_list = [myfont.render(str(x),True,COLOR) for x in random_list]

在while循环中

pos = (x,y)
for text in text_list:
    screen.blit(text,pos)
    pos = (pos[0],pos[1]+50)