python实现好看的时钟效果
作者:码来的小朋友 发布时间:2021-02-11 23:44:25
标签:python,时钟
使用python制作好看的时钟,供大家参考,具体内容如下
游戏用到初高中使用的三角函数等知识开发,长话短说,上完整程序。
#-*- coding:utf-8 -*-
import sys,random,math,pygame
from pygame.locals import *
from datetime import datetime,date,time
def print_text(font,x,y,text,color=(255,255,255)):
imgText=font.render(text,True,color)
screen.blit(imgText,(x,y))
def wrap_angle(angle):
return angle % 360
pygame.init()
screen=pygame.display.set_mode([600,500])
pygame.display.set_caption("AnalogClock")
font = pygame.font.Font(None,36)
orange=220,180,0
white=255,255,255
yellow=255,255,0
pink=255,100,100
pos_x=300
pos_y=250
radius=250
angle=260
while True:
screen.fill([0,0,0])
for event in pygame.event.get():
if event.type==QUIT:
sys.exit()
keys=pygame.key.get_pressed()
if keys[K_ESCAPE]:
sys.exit()
screen.fill([0,0,100])
pygame.draw.circle(screen,white,(pos_x,pos_y),radius,6)
for n in range(1,13):
angle=math.radians(n*(360/12)-90)
x=math.cos(angle)*(radius-20)-10
y=math.sin(angle)*(radius-20)-10
print_text(font, pos_x+x, pos_y+y, str(n))
today=datetime.today()
hours=today.hour % 12
minutes=today.minute
seconds=today.second
hour_angle=wrap_angle(hours*(360/12)-90)
hour_angle=math.radians(hour_angle)
hour_x=math.cos(hour_angle)*(radius-80)
hour_y=math.sin(hour_angle)*(radius-80)
target=(pos_x+hour_x,pos_y+hour_y)
pygame.draw.line(screen,pink,(pos_x,pos_y),target,25)
min_angle=wrap_angle(minutes*(260/60)-90)
min_angle=math.radians(min_angle)
min_x=math.cos(min_angle)*(radius-60)
min_y=math.sin(min_angle)*(radius-60)
target=(pos_x+min_x,pos_y+min_y)
pygame.draw.line(screen,orange,(pos_x,pos_y),target,12)
sec_angle=wrap_angle(seconds*(360/60)-90)
sec_angle=math.radians(sec_angle)
sec_x=math.cos(sec_angle)*(radius-40)
sec_y=math.sin(sec_angle)*(radius-40)
target=(pos_x+sec_x,pos_y+sec_y)
pygame.draw.line(screen,yellow,(pos_x,pos_y),target,6)
pygame.draw.circle(screen,white,(pos_x,pos_y),20)
print_text(font, 0, 0, str(hours)+":"+str(minutes)+":"+str(seconds))
pygame.display.update()
编译后的到的结果为:
是不是挺有趣的,游戏开发就是要用到很多的算法,以后的路还得慢慢的努力了。
来源:https://blog.csdn.net/qq_25755645/article/details/104734474


猜你喜欢
- defaultdict 主要用来需要对 value 做初始化的情形。对于字典来说,key 必须是 hashable,immutable,un
- 从MySQL 5.0.2开始,通过mysql_stmt_attr_set() C API函数实现了服务器端光标。服务器端光标允许在服务器端生
- <?php /* *文件名:linearList.php * 功能:数据结构线性表的顺序存储实现 * author:黎锦焕 * @co
- 1. 为什么要使用正则表达式?首先,大家来看一个例子。一个文本文件里面存储了一些市场职位信息,格式如下所示:Python3 高级开发工程师
- 目录什么是 assert 断言断言和异常的使用场景使用断言的几个原则建议不使用断言的情况:总结什么是 assert 断言Assert sta
- 通过python+splinter,实现在12306网站刷票并自动购票流程(无法自动识别验证码)。此类程序只是提高了12306网站的 <
- 设置部分:首先网页登录QQ邮箱设置一些待会儿会用到的参数:首先开启POP3/SMTP和IMAP/SMTP服务,然后生成授权码,然后复制到代码
- 下面的查询选择所有 date_col 值在最后 30 天内的记录。 mysql> SELECT something FROM tbl_
- --语 句 功 能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --
- 在 Web 应用中,有时需要在响应请求前或者响应请求后做一些处理,为了让每个视图函数避免编写重复功能的代码,Flask 提供了请求钩子,它们
- 简单使用安装celery及redis定义celery任务项目下新建tasks.pyfrom celery import Celery# 创建
- 1.决定大小写是否敏感的参数在 MySQL 中,数据库与 data 目录中的目录相对应。数据库中的每个表都对应于数据库目录中的至少一个文件(
- 本文实例讲述了python中xrange用法。分享给大家供大家参考。具体如下:先来看如下示例:>>> x=xrange(0
- 在登陆界面中,通常,最重要的部分为登陆的Form表。一个非常棒的提升体验的做法是,在载入页面时自动聚焦到第一个提供用户输入的表单框,让用户不
- 现在Ajax是一个相当火的东西,那么Ajax是什么呢?我的理解Ajax就是一个工具,就是一个客户端的技术,不管用何种服务器端技术都可以用Aj
- 单例模式Singleton Pattern是什么单例模式是一种创建型模式,它保证一个类只有一个实例,并提供一个访问它的全局访问点。单例模式的
- BS架构的企业级应用中,当一个表格列数较多时,用户一个常见的需求就是把前面几个重要的列固定住,这样拖动滚动条时固定的列会方便用户查看数据,用
- 从本地文件夹中选取一张图片并在canvas上显示from tkinter import *from tkinter import filed
- mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法。python操
- Microsoft Access 数据库 (.mdb) 文件大小2 G 字节。不