vscode字體:仿抖音網紅文字時鐘python的pygame實現及代碼分析-字體教程免费ppt模版下载-道格办公

仿抖音網紅文字時鐘python的pygame實現及代碼分析

您好!很高興為您提供幫助。根據您的描述,您想要實現一個仿抖音網紅文字時鐘的程序,使用Python的Pygame庫進行實現。下面是一個簡單的示例代碼,用於展示如何創建一個基本的文字時鐘:```pythonimport pygameimport timepygame.init()# 設置窗口大小win_width, win_height = 800, 600win = pygame.display.set_mode((win_width, win_height))pygame.display.set_capt

本文較長,適合收藏,慢慢研讀分析。



一、開篇說明:

1.推薦指數:★★★★★

2.衷心感謝:原作者:執念執戰(王成程)

3.代碼說明:在原作者的基礎上進行代碼的整合、刪減、增加、潤色、註釋,分享出來,僅供學習。

4.仿抖音網紅文字時鐘,目前有app可以下載,網上也有html和css的免費代碼下載,python的很少,這怎麼能讓python缺席呢?


html代碼實現的,網上有免費代碼下載

二、python的pygame實現的效果圖:

1.圖:


2,非常漂亮。


★3.提前準備:★

3.1 python3以上,推薦python3.8

3.2 微軟編輯器vscode

3.3 下載自己喜歡的字體,本文中hwfs=華文仿宋

3.4 二進製文件‘HZK16’,需要自己去下載。

請大家搜索原作者的博客(執念執戰),也是對原作者的尊重,我故意留下一個小bug。

三,代碼及分析:

1.第1步:

#---第1步---導出模塊---from math import *import pygamefrom pygame.locals import *import timeimport sysimport binascii  #任意中文字符時使用到此庫import math

2.第2步:

#---第2步---初始化定義---#字符倍數比例函數,修改次數據可以實現整體的放大和縮小,建議此數值在0.8-1.3 之間,看起來比較合適fontmultiple=1#屏幕的寬和高,圓心坐標是屏幕大小的一半SCREEN_X_MAX = int(1500*fontmultiple) SCREEN_Y_MAX = int(1500*fontmultiple) #遊戲初始化pygame.init()#本人喜歡加RESIZABLE,屏幕大小screen = pygame.display.set_mode((SCREEN_X_MAX,SCREEN_Y_MAX),RESIZABLE)FOCAL_DISTANCE = 512 #透視模型

3.第3步:

#---第3步---顏色定義---BLACK=(0,0,0)WHITE=(255,255,255)RED=(255,0,0)GREEN=(0,255,0 )BLUE=(0,0,255)ForeColor = RED #前景色和背景色BackColor = BLACK#中文字體,可以自己下載,hwfs=hwfsfont = pygame.font.Font('hwfs.ttf', 36) 

4.第4步:原作者是放入一個py文件(Transform3D.py),用模塊一樣導出,我將他整合進去,刪除不需要的部分。

#---第4步---3d相關定義---#定義畫點函數---needdef Gui_Point(x,y,color):    pygame.draw.line(screen,color, (int(x),int(y)),(int(x+1),int(y)),2)#定義坐標結構體類---needclass zuobiaostruct:    def __init__(self):        self.x= 0        self.y=0        self.z=0#矩陣相乘函數---needdef MATRIX_multiply(MAT1,MAT2):    newMAT=[[0.0 for i in range(4)] for n in range(4)]    for a in range(4):        for b in range(4):            newMAT[a][b]=MAT1[a][0]*MAT2[0][b]+MAT1[a][1]*MAT2[1] [b]+MAT1[a][2]*MAT2[2][b]+MAT1[a][3]*MAT2[3][b]        return newMAT#矢量與矩陣相乘函數---needdef vector_matrix_MULTIPLY( Source,MAT):    Result=zuobiaostruct()    Result.x=Source.x*MAT[0][0]+Source.y*MAT[1][0]+Source.z*MAT[2][0]+ MAT[3][0]    Result.y=Source.x*MAT[0][1]+Source.y*MAT[1][1]+Source.z*MAT[2][1]+MAT[3 ][1]    Result.z=Source.x*MAT[0][2]+Source.y*MAT[1][2]+Source.z*MAT[2][2]+MAT[3][2 ]    return Result #構造單位矩陣函數def structure_3D():    MAT=[[0.0 for i in range(4)] for i  in range(4)]    MAT[0][0]=1.0    MAT[0][1] =0.0    MAT[0][2]=0.0    MAT[0][3]=0.0    #// 1 0 0 0     MAT[1][0]=0.0    MAT[1][1]=1.0    MAT[1][ 2]=0.0    MAT[1][3]=0.0    #// 0 1 0 0    MAT[2][0]=0.0    MAT[2][1]=0.0    MAT[2][2]=1.0    MAT[2 ][3]=0.0   #// 0 0 1 0    MAT[3][0]=0.0    MAT[3][1]=0.0    MAT[3][2]=0.0    MAT[3][3]=1.0    # // 0 0 0 1        return MAT    #平移變換矩陣函數---needdef Translate3D(MAT,tx, ty, tz):    tMAT=[[0.0 for i in range(4)] for i  in range(4)]    tMAT [0][0]=1    tMAT[0][1]=0    tMAT[0][2]=0    tMAT[0][3]=0	#//	1 0 0 tx        tMAT[1][0]= 0    tMAT[1][1]=1    tMAT[1][2]=0    tMAT[1][3]=0	#//	0 1 0 ty	    tMAT[2][0]=0    tMAT[2][1 ]=0    tMAT[2][2]=1    tMAT[2][3]=0	#//	0 0 1 tz        tMAT[3][0]=tx    tMAT[3][1]=ty    tMAT[3] [2]=tz    tMAT[3][3]=1;	#//	0 0 0 1    return MATRIX_multiply(MAT,tMAT)#//相乘#比例(scale)變換矩陣函數---needdef   Scale_3D( MAT, sx, sy, sz):    tMAT=[[0.0 for i in range(4)] for i  in range(4)]    tMAT[0][0]=sx    tMAT[0][1]=0    tMAT[0] [2]=0    tMAT[0][3]=0	#//	sx0 0 0     tMAT[1][0]=0    tMAT[1][1]=sy    tMAT[1][2]=0    tMAT[1 ][3]=0	#//	0 sy0 0    tMAT[2][0]=0    tMAT[2][1]=0    tMAT[2][2]=sz    tMAT[2][3]=0    #/ /	0 0 sz0    tMAT[3][0]=0    tMAT[3][1]=0    tMAT[3][2]=0    tMAT[3][3]=1	#//	0 0 0 1    return MATRIX_multiply( MAT,tMAT) #	//相乘#旋轉變換矩陣函數---needdef  Rotate_3D( MAT, ax, ay, az):    MAT1=[[0.0 for i in range(4)] for i  in range(4)] MAT2=[[0.0 for i in range(4)] for i  in range(4)]    MATx=[[0.0 for i in range(4)] for i  in range(4)]    MATy=[[0.0 for i in range(4)] for i  in range(4)]    MATz=[[0.0 for i in range(4)] for i  in range(4)]    ax=(3.1415926*ax)/180.0	#//角度轉換為弧度量ay=(3.1415926*ay)/180.0    az=(3.1415926*az)/180.0        #*****************************繞x軸旋轉********************************************    MATx[0 ][0]=1    MATx[0][1]=0    MATx[0][2]=0    MATx[0][3]=0    #//1  0		0	   0    MATx[1][0]=0    MATx [1][1]=cos(ax)    MATx[1][2]=-sin(ax)    MATx[1][3]=0    #//0  cos(ax)	-sin(ax)   0    MATx[2 ][0]=0    MATx[2][1]=sin(ax)    MATx[2][2]=cos(ax)    MATx[2][3]=0    #//0  sin(ax)	cos(ax )    0	    MATx[3][0]=0    MATx[3][1]=0    MATx[3][2]=0    MATx[3][3]=1    #//0  0		 0	   1    #**** *************************繞y軸旋轉********************* ***********************    MATy[0][0]=cos(ay)    MATy[0][1]=0    MATy[0][2 ]=sin(ay)    MATy[0][3]=0    #//cos(ay)	0	sin(ay)		0    MATy[1][0]=0    MATy[1][1]=1    MATy[1] [2]=0    MATy[1][3]=0    #//	0	1	0		0    MATy[2][0]=-sin(ay)    MATy[2][1]=0    MATy[2][2] =cos(ay)    MATy[2][3]=0    #//	-sin(ay)	0		cos(ay) 0    MATy[3][0]=0    MATy[3][1]=0    MATy[3] [2]=0    MATy[3][3]=1    #// 0 	0	0		1    #**************************** *繞z軸旋轉********************************************    MATz [0][0]=cos(az)    MATz[0][1]=-sin(az)    MATz[0][2]=0    MATz[0][3]=0    #//cos(az)	- sin(az)	0		0    MATz[1][0]=sin(az)    MATz[1][1]=cos(az)    MATz[1][2]=0    MATz[1][3]=0    #/ /	sin(az)	cos(az)		0		0    MATz[2][0]=0    MATz[2][1]=0    MATz[2][2]=1    MATz[2][3]=0    #// 0	  0		1		0    MATz[3][0]=0    MATz[3][1]=0    MATz[3][2]=0    MATz[3][3]=1    #// 0 	  0		0		1    MAT1=MATRIX_multiply (MAT,MATx)    MAT2=MATRIX_multiply(MAT1,MATy)	    return MATRIX_multiply(MAT2,MATz)	#透視投影(Perspective projection)---needdef PerProject( Space,  XO,  YO):    Screen=zuobiaostruct()    if (Space.z ==0):        Space.z=0.01		#//被除數不能為零Screen.x=(int)(FOCAL_DISTANCE*Space.x /(Space.z+FOCAL_DISTANCE)+XO)    Screen.y=(int)(FOCAL_DISTANCE *Space.y /(Space.z+FOCAL_DISTANCE)+YO)    return Screen#顯示3D的16x16字符---needdef Show3D16x16Char(font,ax,ay,az,x,y,Z_Size,frontcolor,backcolor,model=1.5 ,fontmultiple=1.0):    length = len(font)    if length == 0:#字符數要大於一個return     if length == 1: #只支持一個字符的顯示text = font    else:        text = font[0]    m =0    i=0    k=0    j=0    XO=0    YO=0        gMAT=[[0.0 for i in range(4)]  for n in range(4)]    Point0=zuobiaostruct()    Point1=zuobiaostruct()    PointDis=zuobiaostruct()        gMAT=structure_3D()                        #//構建單位矩陣gMAT=Translate3D(gMAT,- 8,-8,-8);         #//平移變換矩陣gMAT=Scale_3D(gMAT,fontmultiple,fontmultiple,fontmultiple);                #//比例變換矩陣gMAT=Rotate_3D(gMAT,ax,ay,az);            #//旋轉變換矩陣for m in range(length): #理論上就是將單個的字符延長為多個字符,最重要的就是坐標的確定和計算text=font[m]        gb2312 = text.encode('gb2312') hex_str = binascii.b2a_hex(gb2312)        result = str(hex_str,encoding = 'utf-8' )  #換算出漢字對應的字符地址if eval('0x' + result[:2]) <128:            return        else: area = eval('0x' + result[:2]) - 0xA0            index = eval('0x' + result[2:]) - 0xA0 #換算為16進制地址offset = (94 * (area - 1)+ (index - 1))*32  #得出具體地址font_rect = None            #注意這個文件HZK16,二進製文件需要單獨下載with open("/home/xgj/Desktop/漢字時鐘/pyxgj/HZK16","rb") as f: #16x16字符集的地址,從中讀取出一個字符的點陣數據f.seek(offset)                font_rect = f.read(32)#得到32個點陣數據f.close()            for i in range (16):            for k in range(8):                temp = 0x01 << k                for j in range(2):                    data=font_rect[i*2+j]  #取出數據if data & temp == temp:                        Point0 .x=16-(k+(1-j)*8)+m*16+m*2 #第m個字符的當前點的坐標#每個字符16個像素,第m個字符共m*16個像素,每兩個字符間的間距設為2,則m*16+m*2,前面的時實現當前點陣坐標的計算Point0.y=i    #(i*8)+k                        Point0.z=Z_Size #//此參數能夠改變字符距離旋轉軸中心的距離Point1=vector_matrix_MULTIPLY(Point0,gMAT)#//矢量與矩陣相乘PointDis=PerProject(Point1,XO,YO)       #//映射投影Gui_Point(PointDis.x +x,PointDis.y+y,frontcolor)                    else:                        if model ==1: #模式為1 時才會繪製底色Point0.x=16-(k+(1-j)*8)+m*16+ m*2                            Point0.y=i #(i*8)+k                            Point0.z=Z_Size        #//此參數能夠改變字符距離旋轉軸中心的距離Point1=vector_matrix_MULTIPLY(Point0,gMAT)#//矢量與矩陣相乘PointDis=PerProject(Point1,XO,YO)       #//映射投影Gui_Point(PointDis.x+x,PointDis.y+y,

5.第5步:我增加了秒的相關定義和設置,在後續中補充秒的部分代碼。

#---第5步---中文標籤定義-------------Week_zw=("一","二","三","四" ,"五","六","日") #星期的中文Day_zw=("零","一","二","三","四","五","六","七","八","九","十") #可用於所有需要0-10的中文的地方Mouth_day=[31,28,31,30,31,30,31,31,30,31,30 ,31] #月份時長表#秒Second_add=['零','一', '二', '三', '四', '五', '六', '七', '八', '九', '十',            '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九' ,            '二十','二十一', '二十二', '二十三', '二十四', '二十五', '二十六', '二十七', '二十八', '二十九',            '三十','三十一', '三十二', '三十三', '三十四', '三十五', '三十六' , '三十七', '三十八', '三十九',             '四十','四十一', '四十二', '四十三', '四十四', '四十五', '四十六', '四十七', '四十八', '四十九',             '五十', '五十一', '五十二', '五十三', '五十四', '五十五', '五十六', '五十七', '五十八', '五十九',             ]

6.第6步:這裡有增加秒的代碼

#---第6步---相關顯示函數定義---#顯示年def Show_Year(x0,y0,r,angel):    timenow=time.localtime(time.time()) #獲取時間yearstr=Day_zw[(int)(timenow[0]/1000)]+Day_zw[int((timenow[0]%1000)/100)]+Day_zw[int((timenow[0]%100)/ 10)]+Day_zw[int((timenow[0]%10))]+"年"    Show3D16x16Char(yearstr,0,0,angel-90,x0,y0,1,WHITE,BackColor,0,fontmultiple)#顯示週(星期)def Show_Week(x0,y0,r,agl):    timenow=time.localtime(time.time()) #獲取時間for i in range(7):        angel=360/7        if i < timenow[ 6]:            angel=agl-angel*(timenow[6]-i)            ForeColor=RED        elif i >timenow[6]:            angel=agl+angel*(i-timenow[6])            ForeColor=RED        else :            angel= agl  #當前週設為90度,即在水平方向上ForeColor=WHITE        x1=x0 + r * math.sin(angel * 3.14/180) #由角度計算出當前應在的坐標點y1=y0 + r * math.cos(angel * 3.14/180)        Show3D16x16Char("週"+Week_zw[i],0,0,angel-90,(int)(x1),(int)(y1),1,ForeColor,BackColor,0 ,fontmultiple)#輸出旋轉後的字符串#顯示月份def Show_Month(x0,y0,r,agl):    timenow=time.localtime(time.time())#獲取時間for i in range(1,13): #一年12個月angel=360/12        if i < timenow[1]:            angel=agl-angel*(timenow[1]-i) #其他月份相應得到角度推算ForeColor=GREEN        elif i >timenow[ 1]:            angel=agl+angel*(i-timenow[1])            ForeColor=GREEN        else :            angel=agl  #當前月份設為90度,即在水平方向上ForeColor=WHITE        x1=x0 + r * math.sin (angel * 3.14/180) #由角度計算出當前應在的坐標點y1=y0 + r * math.cos(angel * 3.14/180)        if i>10:            monthstr=Day_zw[10]+Day_zw[i% 10]+"月"  #得出要顯示的字符串else:            monthstr = Day_zw[i]+"月"        Show3D16x16Char(monthstr,0,0,angel-90,(int)(x1),(int)(y1 ),1,ForeColor,BackColor,0,fontmultiple)#顯示字符串#顯示日期def Show_Day(x0,y0,r,agl):    timenow=time.localtime(time.time()) #獲取時間if (timenow[ 0]%4==0 and timenow[0]%100 !=0) or (timenow[0]%400 == 0):        Mouth_day[1]=29 #閏年,補全二月的時長表else:        Mouth_day [1]=28        #Mouth_day 為月份的時長表for i in range(1,Mouth_day[timenow[1]-1]+1):        angel=360/Mouth_day[timenow[1]-1]        if i < timenow [2]:            angel=agl-angel*(timenow[2]-i)#其他日期相應得到角度推算ForeColor=RED        elif i >timenow[2]:            angel=agl+angel*(i-timenow[2] )            ForeColor=RED        else :            angel=agl  #當前日期設為90度,即在水平方向上ForeColor=WHITE        x1=x0 + r * math.sin(angel * 3.14/180)#由角度計算出當前應在的坐標點y1=y0 + r * math.cos(angel * 3.14/180)        if i>20:            if i%10 !=0:                daystr= Day_zw[(int)(i/10) ]+ Day_zw[10] + Day_zw[i%10]+"日"#得出要顯示的字符串else:                daystr= Day_zw[(int)(i/10) ]+ Day_zw[10]+"日"        elif i>10:            daystr= Day_zw [10]+Day_zw[i%10]+"日"        else:            daystr=Day_zw[i]+"日"        Show3D16x16Char(daystr,0,0,angel-90,(int)(x1),(int)(y1 ),1,ForeColor,BackColor,0,fontmultiple)#顯示字符串#顯示時=小時=hdef Show_Hour(x0,y0,r,agl):    timenow=time.localtime(time.time())#獲取時間for i in range(0,24):        angel=360/24        if i < timenow[3]:            angel=agl-angel*(timenow[3]-i)#其他時間相應得到角度推算ForeColor=GREEN        elif i > ;timenow[3]:            angel=agl+angel*(i-timenow[3])            ForeColor=GREEN        else :            angel=agl  #當前時間設為90度,即在水平方向上ForeColor=WHITE        x1=x0 + r * math.sin(angel * 3.14/180)        y1=y0 + r * math.cos(angel * 3.14/180)        if i>20:            if i%10 !=0:                daystr= Day_zw[(int)(i/10 ) ]+ Day_zw[10] +Day_zw[i%10]+"時"  #得到要顯示的字符串else:                daystr= Day_zw[(int)(i/10) ]+ Day_zw[10]+"時"        elif i>10:            daystr= Day_zw[10]+Day_zw[i%10]+"時"        else:            daystr=Day_zw[i]+"時"        Show3D16x16Char(daystr,0,0,angel-90,(int)(x1 ),(int)(y1),1,ForeColor,BackColor,0,fontmultiple) #顯示角度計算後的字符串# 顯示分=分鐘=m   def Show_Min(x0,y0,r,agl):    timenow=time. localtime(time.time())    for i in range(0,60):        angel = 360/60        if i < timenow[4]:            #將秒數也代入角度計算中就可以得到更精確的角度偏移,而且每秒鐘都會移動,好看angel=agl-angel*(timenow[4]-i)-(360/60/60 * timenow[5] )             ForeColor=RED        elif i > timenow[4]:            angel = agl + angel * (i-timenow[4]) - (360/60/60 * timenow[5] )            ForeColor = RED        else :            angel = agl - (360/60/60 * timenow[5] )  #當前日期設為90度-秒鐘的角度,實現動態顯示ForeColor = WHITE        x1 = x0 + r * math.sin(angel * 3.14/180) #由角度計算出當前應在的坐標點y1 = y0 + r * math. cos(angel * 3.14/180)        if i>=20:            if i%10 !=0:                daystr = Day_zw[(int)(i/10) ]+ Day_zw[10] +Day_zw[i%10]+"分" #得到要顯示的字符串else:                daystr = Day_zw[(int)(i/10) ]+ Day_zw[10]+"分"        elif i>10:            daystr = Day_zw[10]+Day_zw[i%10] +"分"        else:            daystr = Day_zw[i]+"分"        Show3D16x16Char(daystr,0,0,angel-90,(int)(x1),(int)(y1),1,ForeColor,BackColor,0,fontmultiple)#顯示角度計算後的字符串# 顯示秒=秒針=s   def Show_Sec(x0,y0,r,agl):    #獲取時間列表timenow=time.localtime(time.time())    #print(timenow) #time.struct_time(tm_year=2020, tm_mon=3, tm_mday=28, tm_hour=9, tm_min=24, tm_sec=18)    for i in range(0,60):        angel = 360/60        if i < timenow[ 5]:            #有一個bug,如何實現跳一秒走一格,整體轉一圈優雅些,暫時不會。 angel=agl-angel*(timenow[5]-i)-(360/60 * timenow[5])             ForeColor=GREEN        elif i > timenow[5]:            angel = agl + angel * (i-timenow[5] )-(360/60 * timenow[5])             ForeColor = GREEN        else :            #當前日期設為90度-秒鐘的角度,實現動態顯示angel = agl-(360/60 * timenow[5] )             #歸零=o時顯示紅色if angel ==90:                ForeColor = RED            #當前時間為白色else:                ForeColor = WHITE        #根據秒錶動態轉圈x1 = x0 + r * math.sin(angel * 3.14/180) #由角度計算出當前應在的坐標點y1 = y0 + r * math.cos(angel * 3.14/180)        if i>=20:            if i%10 !=0:                #加入秒的字符串daystr = Second_add[(int)( i/10) ]+ Second_add[10] +Second_add[i%10]+"秒" #得到要顯示的字符串else:                daystr = Second_add[(int)(i/10) ]+ Second_add[10]+"秒"        elif i>10:            daystr = Second_add[10]+Second_add[i%10]+"秒"        else:            daystr = Second_add[i]+"秒"        #顯示秒的字符串一圈Show3D16x16Char(daystr,0, 0,angel-90,(int)(x1),(int)(y1),1,ForeColor,BackColor,0,

7.第7步:我增加了打印當前時間的打印文字函數

#---第7步---定義打印屏幕文字函數---def print_text(font, x, y, text, color=WHITE):    imgText = font.render(text, True, WHITE)    screen.blit(imgText, (int(float(x)),int(float(y))))

8.第8步:

#---第8步---遊戲循環---i=0while True:    #獲取今天的時間timenow=time.localtime(time.time())    #定義年月日years= timenow[0]    months=timenow[1]    days=timenow[2]    #定義時分秒#hours = today.hour % 12 #顯示12h制hours = timenow[3] % 24 #顯示24h制minutes = timenow[4] seconds = timenow[5]    #顯示當前時間,x=400,y=550,為坐標print_text(font, 500, 150, '當前時間:'+str(years) +'年'+str(months) +'月'+str(days)     +'日'+str(hours) +'時'+ ":" + str(minutes) + '分'+":" + str(seconds)+'秒')     #退出設置for event in pygame.event.get():        if event.type in (QUIT,KEYDOWN):            pygame.quit()            sys.exit()       i+=1    #當i<90啟動時整體圓盤都要轉動,當≥90時停止if i > 90:        i=90        #圓盤設置#坐標點,水平向右坐標定固定顯示白色當前時間;    Show_Year(SCREEN_X_MAX/2-40*fontmultiple,SCREEN_Y_MAX/2,32,90) #顯示年Show_Week(SCREEN_X_MAX/2,SCREEN_Y_MAX/2,65*fontmultiple,180-i) #顯示週Show_Month(SCREEN_X_MAX/2,SCREEN_Y_MAX/2,110*fontmultiple,i)    #顯示月份Show_Day(SCREEN_X_MAX/2,SCREEN_Y_MAX/2,170 *fontmultiple,180-i)  #顯示日期Show_Hour(SCREEN_X_MAX/2,SCREEN_Y_MAX/2,245*fontmultiple,i)     #顯示時Show_Min(SCREEN_X_MAX/2,SCREEN_Y_MAX/2,325*fontmultiple,180-i)  #顯示分Show_Sec(SCREEN_X_MAX/ 2,SCREEN_Y_MAX/2,425*fontmultiple,180-i)  #顯示秒#線圈的設置pygame.draw.circle(screen,ForeColor,((int)(SCREEN_X_MAX/2),(int)(SCREEN_Y_MAX/2)),int (55*fontmultiple),1) #顯示幾個圓pygame.draw.circle(screen,ForeColor,((int)(SCREEN_X_MAX/2),(int)(SCREEN_Y_MAX/2)),int(100*fontmultiple), 1)    pygame.draw.circle(screen,ForeColor,((int)(SCREEN_X_MAX/2),(int)(SCREEN_Y_MAX/2)),int(160*fontmultiple),1)    pygame.draw.circle(screen,ForeColor ,((int)(SCREEN_X_MAX/2),(int)(SCREEN_Y_MAX/2)),int(235*fontmultiple),1)    pygame.draw.circle(screen,ForeColor,((int)(SCREEN_X_MAX/2), (int)(SCREEN_Y_MAX/2)),int(315*fontmultiple),1)    pygame.draw.circle(screen,ForeColor,((int)(SCREEN_X_MAX/2),(int)(SCREEN_Y_MAX/2)),int (415*fontmultiple),1)        pygame.display.update()    screen.fill(0)  #屏幕清零


四、結束語:

據說python無所不能,可惜我也是新手小白,我也是站在巨人和大神的肩膀上的,感謝大神執念執戰(王成程)。最重要的是python為什麼這麼火?第1是代碼簡潔;第2是代碼及庫很多,都是開源的、免費的,都是大神們之間互相免費提供的,在此多謝他們。

喜歡python的人,不管多大年紀、不管男女,看我的python,你學起來簡單有趣,我都是親測過的。

文章為用戶上傳,僅供非商業瀏覽。發布者:Lomu,轉轉請註明出處: https://www.daogebangong.com/zh-Hant/articles/detail/Pygame%20implementation%20and%20code%20analysis%20of%20imitating%20Douyin%20net%20red%20text%20clock%20python.html

(810)
打賞 支付宝扫一扫 支付宝扫一扫
single-end

相關推薦