python开发制作好看的时钟效果


Posted in Python onMay 02, 2022

使用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()

编译后的到的结果为:

python开发制作好看的时钟效果

是不是挺有趣的,游戏开发就是要用到很多的算法,以后的路还得慢慢的努力了。

以上就是本文的全部内容,希望对大家的学习有所帮助。


Tags in this post...

Python 相关文章推荐
python 提取文件的小程序
Jul 29 Python
Python和C/C++交互的几种方法总结
May 11 Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 Python
python实现闹钟定时播放音乐功能
Jan 25 Python
python删除过期log文件操作实例解析
Jan 31 Python
Python解决两个整数相除只得到整数部分的实例
Nov 10 Python
Python 多维List创建的问题小结
Jan 18 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
Feb 18 Python
python简单实现最大似然估计&scipy库的使用详解
Apr 15 Python
python多次执行绘制条形图
Apr 20 Python
关于的python五子棋的算法
python开发人人对战的五子棋小游戏
python pygame 开发五子棋双人对弈
May 02 #Python
Python开发简易五子棋小游戏
May 02 #Python
Python开发五子棋小游戏
python获取带有返回值的多线程
May 02 #Python
总结三种用 Python 作为小程序后端的方式
You might like
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
动态刷新 dorado树的js代码
2009/06/12 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
Python之父谈Python的未来形式
2016/07/01 Python
Python创建xml文件示例
2017/03/22 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
Python基础教程之异常详解
2019/01/10 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
全球最大的服务市场:Fiverr
2017/01/03 全球购物
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
android面试问题与答案
2016/12/27 面试题
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
2014年三八妇女节活动方案
2014/02/28 职场文书
文体活动实施方案
2014/03/27 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
员工手册董事长致辞
2015/07/29 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers