校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > pygame可視化幸運大轉盤實現

pygame可視化幸運大轉盤實現

熱門標簽:地圖標注微信發送位置不顯示 地圖制圖標注位置改變是移位嗎 上海機器人外呼系統哪家好 南京銷售外呼系統軟件 浙江電銷卡外呼系統好用嗎 地圖標注的意義點 房產電銷外呼系統 蓋州市地圖標注 315電話機器人廣告

繼續分享pygame有趣的技術知識,歡迎往下看。

一、先搭個架子

(一)黏貼背景圖:

實現代碼如下:

import pygame

pygame.init()  # 初始化pygame類
screen = pygame.display.set_mode((600, 600))  # 設置窗口大小
pygame.display.set_caption('幸運大轉盤')  # 設置窗口標題
tick = pygame.time.Clock()
fps = 10  # 設置刷新率,數字越大刷新率越高
# 方法一
# bg = pygame.image.load("./幸運大轉盤.png").convert()
# 方法二
picture = pygame.transform.scale(pygame.image.load("./幸運大轉盤.png"), (600, 600))
bg=picture.convert()

while True:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    # screen.fill((255, 255, 0))  # 設置背景為白色
    screen.blit(bg, (0, 0))
    tick.tick(fps)
    pygame.display.flip()  # 刷新窗口

(二)增加中間的圈圈

核心代碼:

pygame.draw.circle(screen,(255,255,0),(300,300),50)

代碼解釋:

繪制圓形方法:pygame.draw.circle(Surface, color, pos , raduis, width)

其中:

  • Surfuce參數: 傳入需要在該Surface對象上繪制圓形的Surface對象
  • color參數: 需要繪制圓形的線的顏色,傳入一個rgb三原色元組
  • pos參數:圓心的坐標
  • raduis 表示圓的半徑
  • width參數:表示繪制圓的線的寬度,當為0時,圓內全部被填充

效果圖:


相關代碼如下:

import pygame

pygame.init()  # 初始化pygame類
screen = pygame.display.set_mode((600, 600))  # 設置窗口大小
pygame.display.set_caption('幸運大轉盤')  # 設置窗口標題
tick = pygame.time.Clock()
fps = 10  # 設置刷新率,數字越大刷新率越高
# 方法一
# bg = pygame.image.load("./幸運大轉盤.png").convert()
# 方法二
picture = pygame.transform.scale(pygame.image.load("./幸運大轉盤.png"), (600, 600))
bg=picture.convert()

while True:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    # screen.fill((255, 255, 0))  # 設置背景為白色
    screen.blit(bg, (0, 0))
    pygame.draw.circle(screen,(255,255,0),(300,300),50)
    tick.tick(fps)
    pygame.display.flip()  # 刷新窗口

(三)讓大轉盤自己動起來

核心代碼:

    newbg = pygame.transform.rotate(bg, angle)
    newRect = newbg.get_rect(center=(300,300))
    angle -= 1
    screen.blit(newbg, newRect)

運行效果:


相關代碼如下:

import pygame

pygame.init()  # 初始化pygame類
screen = pygame.display.set_mode((600, 600))  # 設置窗口大小
pygame.display.set_caption('幸運大轉盤')  # 設置窗口標題
tick = pygame.time.Clock()
fps = 10  # 設置刷新率,數字越大刷新率越高
# 方法一
# bg = pygame.image.load("./幸運大轉盤.png").convert()
# 方法二
picture = pygame.transform.scale(pygame.image.load("./幸運大轉盤.png"), (600, 600))
bg=picture.convert()

angle = 0
while True:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    # screen.fill((255, 255, 0))  # 設置背景為白色
    newbg = pygame.transform.rotate(bg, angle)
    newRect = newbg.get_rect(center=(300,300))
    angle -= 1
    screen.blit(newbg, newRect)

    # screen.blit(bg, (0, 0))
    pygame.draw.circle(screen,(255,255,0),(300,300),50)
    tick.tick(fps)
    pygame.display.flip()  # 刷新窗口

二、再加個指針,幸運的小指針

(一)小指針不動,轉盤動

運行效果:

相關代碼如下:

import pygame

pygame.init()  # 初始化pygame類
screen = pygame.display.set_mode((600, 600))  # 設置窗口大小
pygame.display.set_caption('幸運大轉盤')  # 設置窗口標題
tick = pygame.time.Clock()
fps = 10  # 設置刷新率,數字越大刷新率越高
picture = pygame.transform.scale(pygame.image.load("./幸運大轉盤.png"), (600, 600))
bg=picture.convert()
picture = pygame.transform.scale(pygame.image.load("./hand.png"), (30, 230))
hand = picture.convert_alpha()
angle = 0
while True:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    newbg = pygame.transform.rotate(bg, angle)
    newRect = newbg.get_rect(center=(300,300))
    angle -= 1
    screen.blit(newbg, newRect)

    newRect = hand.get_rect(center=(300,150))
    screen.blit(hand,newRect)
    
    pygame.draw.circle(screen,(255,255,0),(300,300),50)
    tick.tick(fps)
    pygame.display.flip()  # 刷新窗口

(二)轉盤不動,小指針動

思路:轉盤指針的框的中心點按照圓的軌跡進行移動,然后在移動的過程中同步旋轉對應的角度,這樣就整個指針一方面移動,一方面轉動。實現了自然的按照中心旋轉的效果了。

1、先自己畫指針矩形框的中心點移動

代碼如下:

import pygame,sys
import math

pygame.init()  # 初始化pygame類
screen = pygame.display.set_mode((600, 600))  # 設置窗口大小
pygame.display.set_caption('幸運大轉盤')  # 設置窗口標題
tick = pygame.time.Clock()
fps = 100  # 設置刷新率,數字越大刷新率越高
picture = pygame.transform.scale(pygame.image.load("./幸運大轉盤.png"), (600, 600))
bg=picture.convert()
picture = pygame.transform.scale(pygame.image.load("./hand.png"), (30, 230))
hand = picture.convert_alpha()
angle = 0
pos_list = []
while True:
    posx = 300+int(150*math.sin(135+angle/360))
    posy = 300+int(150*math.cos(135+angle/360))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    screen.blit(bg,(0,0))
    pos_list.append((posx,posy))
    for pos in pos_list:
        pygame.draw.circle(screen, (0, 0, 0), pos, 1)
    angle -= 2
    pygame.draw.circle(screen,(255,255,0),(300,300),80)
    tick.tick(fps)
    pygame.display.flip()  # 刷新窗口

效果如下:

2、增加指針轉動(不完善的版本)

代碼如下:

import pygame,sys
import math

pygame.init()  # 初始化pygame類
screen = pygame.display.set_mode((600, 600))  # 設置窗口大小
pygame.display.set_caption('幸運大轉盤')  # 設置窗口標題
tick = pygame.time.Clock()
fps = 100  # 設置刷新率,數字越大刷新率越高
picture = pygame.transform.scale(pygame.image.load("./幸運大轉盤.png"), (600, 600))
bg=picture.convert()
picture = pygame.transform.scale(pygame.image.load("./hand.png"), (30, 230))
hand = picture.convert_alpha()
angle = 0
pos_list = []
while True:
    posx = 300+int(150*math.sin(135+angle/360))
    posy = 300+int(150*math.cos(135+angle/360))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    screen.blit(bg,(0,0))
    pos_list.append((posx,posy))
    for pos in pos_list:
        pygame.draw.circle(screen, (0, 0, 0), pos, 1)
    newhand = pygame.transform.rotate(hand, angle/6)
    # old_center = rect.center
    newRect = newhand.get_rect(center=(posx,posy))
    screen.blit(newhand,newRect)
    pygame.draw.rect(screen, (255,0,0), newRect, 1)
    # if angle>-10:
    angle -= 2
    print(angle)
    if angle  -2250:
        angle = 0

    pygame.draw.circle(screen,(255,255,0),(300,300),80)
    tick.tick(fps)
    pygame.display.flip()  # 刷新窗口

效果如下:

3、增加指針轉動(修正版)

發現原來是math類庫中的sin和cos函數傳遞的參數問題。

Math.Sin()里面的是弧度制。 如果是sin(30),就用Math.Sin(Math.PI*30.0/180.0);

因此主要修改的代碼如下:

    posx = 300 + int(150 * math.sin(angle * math.pi / 180))
    posy = 300 - int(150 * math.cos(angle * math.pi / 180))

對應的運行效果如下:

想運行快點的話,就把angle的參數變大就好。

完整代碼如下:

import pygame
import math
pygame.init()  # 初始化pygame類
screen = pygame.display.set_mode((600, 600))  # 設置窗口大小
pygame.display.set_caption('幸運大轉盤')  # 設置窗口標題
tick = pygame.time.Clock()
fps = 10  # 設置刷新率,數字越大刷新率越高
picture = pygame.transform.scale(pygame.image.load("./幸運大轉盤.png"), (600, 600))
bg=picture.convert()
picture = pygame.transform.scale(pygame.image.load("./hand.png"), (30, 230))
hand = picture.convert_alpha()
angle = 0
while True:
    posx = 300 + int(150 * math.sin(angle * math.pi / 180))
    posy = 300 - int(150 * math.cos(angle * math.pi / 180))
    print(posx, posy, math.sin(angle * math.pi / 180))

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    screen.blit(bg,(0,0))
    newhand = pygame.transform.rotate(hand, -angle)
    newRect = newhand.get_rect(center=(posx,posy))
    screen.blit(newhand,newRect)
    angle += 10
    pygame.draw.circle(screen,(255,255,0),(300,300),50)
    tick.tick(fps)
    pygame.display.flip()  # 刷新窗口

三、增加隨時數算法,實現隨機事件

直接借用了這個算法:

輪盤分為三部分: 一等獎, 二等獎和三等獎;
輪盤轉的時候是隨機的,
如果范圍在[0,0.08)之間,代表一等獎,
如果范圍在[0.08,0.3)之間,代表2等獎,
如果范圍在[0.3, 1.0)之間,代表3等獎,

把該算法封裝成函數,相關代碼如下:

rewardDict = {
    '一等獎': (0, 0.03),
    '二等獎': (0.03, 0.2),
    '三等獎': (0.2, 1)
}
def rewardFun():
    """用戶的得獎等級"""
    # 生成一個0~1之間的隨機數
    number = random.random()
    # 判斷隨機轉盤是幾等獎
    for k, v in rewardDict.items():
        if v[0] = number  v[1]:
            return k

四、增加開始函數

def start():
    while True:
        for event in pygame.event.get():

            # 處理退出事件
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if (event.key == pygame.K_ESCAPE):
                    pygame.quit()
                    sys.exit()
                else:
                    return
        screen.blit(bg,(0,0))
        newRect = hand.get_rect(center=(300,150))
        screen.blit(hand,newRect)

        pygame.draw.circle(screen,(255,255,0),(300,300),50)

        textFont = pygame.font.Font("./font/font.ttf", 80)
        textSurface = textFont.render("go", True, (110, 55, 155))
        screen.blit(textSurface, (270, 230))
        pygame.display.update()

五、增加結束函數

def end(k):
    textFont = pygame.font.Font("./font/font.ttf", 50)
    textSurface = textFont.render("your awards is :%s" % k, True, (110, 55, 155))
    screen.fill((155, 155, 0))
    screen.blit(textSurface, (30, 230))

六、最終完整效果及代碼

import pygame,sys
import math
import random

pygame.init()  # 初始化pygame類
screen = pygame.display.set_mode((600, 600))  # 設置窗口大小
pygame.display.set_caption('幸運大轉盤')  # 設置窗口標題
tick = pygame.time.Clock()
fps = 10  # 設置刷新率,數字越大刷新率越高
picture = pygame.transform.scale(pygame.image.load("./幸運大轉盤.png"), (600, 600))
bg=picture.convert()
picture = pygame.transform.scale(pygame.image.load("./hand.png"), (30, 230))
hand = picture.convert_alpha()

rewardDict = {
    'first level': (0, 0.03),
    'second level': (0.03, 0.2),
    'third level': (0.2, 1)
}
def rewardFun():
    """用戶的得獎等級"""
    # 生成一個0~1之間的隨機數
    number = random.random()
    # 判斷隨機轉盤是幾等獎
    for k, v in rewardDict.items():
        if v[0] = number  v[1]:
            return k

def start():
    while True:
        for event in pygame.event.get():

            # 處理退出事件
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if (event.key == pygame.K_ESCAPE):
                    pygame.quit()
                    sys.exit()
                else:
                    return
        screen.blit(bg,(0,0))
        newRect = hand.get_rect(center=(300,150))
        screen.blit(hand,newRect)

        pygame.draw.circle(screen,(255,255,0),(300,300),50)

        textFont = pygame.font.Font("./font/font.ttf", 80)
        textSurface = textFont.render("go", True, (110, 55, 155))
        screen.blit(textSurface, (270, 230))
        pygame.display.update()

def middle():
    angle = 0
    while True:
        posx = 300 + int(150 * math.sin(angle * math.pi / 180))
        posy = 300 - int(150 * math.cos(angle * math.pi / 180))
        print(posx, posy, math.sin(angle * math.pi / 180))

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
        screen.blit(bg,(0,0))

        newhand = pygame.transform.rotate(hand, -angle)

        newRect = newhand.get_rect(center=(posx,posy))
        screen.blit(newhand,newRect)
        pygame.draw.circle(screen,(255,255,0),(300,300),50)

        angle += 10

        if angle > 500:
            k = rewardFun()
            end(k)

        tick.tick(fps)
        pygame.display.flip()  # 刷新窗口


def end(k):
    textFont = pygame.font.Font("./font/font.ttf", 50)
    textSurface = textFont.render("your awards is :%s" % k, True, (110, 55, 155))
    screen.fill((155, 155, 0))
    screen.blit(textSurface, (30, 230))


if __name__ == '__main__':
    start()
    middle()

運行效果如下:

七、尾聲

總算完整寫完了整個案例,發現通過在上班過程中抽空寫這些博客,真的很難,碼字不易、輸出不易,且行且珍惜。
里面有很多細節么有優化、自己都發現很多bug,沒有很多的時間去完善和改進,歡迎各位多多提出寶貴意見。

到此這篇關于pygame可視化幸運大轉盤實現的文章就介紹到這了,更多相關pygame 幸運大轉盤內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • pygame實現井字棋之第二步邏輯實現
  • pygame實現井字棋之第一步繪制九宮格
  • pygame多種方式實現屏保操作(自動切換、鼠標切換、鍵盤切換)
  • 詳解pygame捕獲鍵盤事件的兩種方式
  • python+pygame實現代碼雨(黑客帝國既視感)
  • Pygame做一期吃豆子游戲的示例代碼
  • Python3+Pygame實現射擊游戲完整代碼
  • pygame實現井字棋之第三步邏輯優化

標簽:臨汾 雙鴨山 陽泉 貴州 日照 克拉瑪依 赤峰 金華

巨人網絡通訊聲明:本文標題《pygame可視化幸運大轉盤實現》,本文關鍵詞  pygame,可視化,幸運,大,轉盤,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pygame可視化幸運大轉盤實現》相關的同類信息!
  • 本頁收集關于pygame可視化幸運大轉盤實現的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美电影在线免费观看| 久久综合久久综合久久综合| 精彩视频一区二区三区| 亚洲精品中文字幕在线观看| 欧美一区二区精品| 欧美性猛片aaaaaaa做受| 激情文学综合网| 亚洲成人777| 亚洲美女屁股眼交| 国产欧美一区二区三区鸳鸯浴 | 亚洲精品中文在线影院| 日韩精品一区二区三区中文不卡| 91污片在线观看| 国产美女av一区二区三区| 午夜激情一区二区三区| 国产精品国产三级国产普通话蜜臀 | 一区二区三区精品久久久| 精品国产一区二区三区av性色| 色综合中文字幕| 国产成人免费视频一区| 久久精品国产亚洲高清剧情介绍 | 亚洲天堂av一区| 久久久国产精华| 精品处破学生在线二十三| 69堂精品视频| 欧美一区二区视频在线观看| 欧美日韩一卡二卡三卡| 在线观看视频一区| 色88888久久久久久影院按摩 | 欧美一区二区人人喊爽| 欧美日韩中文字幕一区二区| 色综合久久综合网欧美综合网| 波多野结衣91| 大胆亚洲人体视频| 国产91在线|亚洲| 盗摄精品av一区二区三区| 国产一区二区三区在线观看免费| 精品夜夜嗨av一区二区三区| 久久成人羞羞网站| 国产一区二区中文字幕| 国产精品一区专区| 不卡欧美aaaaa| 高清beeg欧美| 91玉足脚交白嫩脚丫在线播放| fc2成人免费人成在线观看播放 | 免费成人在线观看视频| 亚洲第一av色| 奇米在线7777在线精品| 蜜臀99久久精品久久久久久软件| 蜜臀av一区二区在线免费观看| 青青草91视频| 国产综合久久久久影院| 国产成人自拍网| 国产精品亚洲一区二区三区妖精 | 亚洲一区在线视频| 日韩一区精品视频| 久久成人羞羞网站| 国产91丝袜在线播放| 97久久超碰国产精品| 欧美日韩精品欧美日韩精品| 日韩一区和二区| 久久久久久夜精品精品免费| 国产蜜臀av在线一区二区三区| 国产日本一区二区| 伊人性伊人情综合网| 欧美aⅴ一区二区三区视频| 91老司机福利 在线| 欧美性受极品xxxx喷水| 欧美一区二区成人| 国产人伦精品一区二区| 亚洲日韩欧美一区二区在线| 日韩精品视频网站| 国产一区二区电影| 色婷婷国产精品久久包臀| 欧美一区二区视频在线观看2020| 久久久www成人免费无遮挡大片| 国产精品久线观看视频| 亚洲成年人影院| 国产成人精品免费网站| 精品视频在线免费观看| 久久你懂得1024| 亚洲综合色网站| 国产在线不卡一区| 色天天综合久久久久综合片| 日韩亚洲欧美中文三级| 亚洲视频在线一区| 激情综合网激情| 色狠狠色狠狠综合| 精品国产免费人成电影在线观看四季 | 亚洲第一精品在线| 国产精品一区二区在线播放 | 日韩av电影天堂| 懂色av中文字幕一区二区三区| 欧美写真视频网站| 久久亚洲精品小早川怜子| 亚洲制服丝袜在线| 成人影视亚洲图片在线| 日韩亚洲欧美在线| 夜夜嗨av一区二区三区四季av| 国内精品视频666| 欧美日本一区二区| 亚洲精品网站在线观看| 高清成人免费视频| 日韩美女主播在线视频一区二区三区| 1000精品久久久久久久久| 精品一区精品二区高清| 欧美日本韩国一区二区三区视频| 久久在线观看免费| 视频一区在线视频| 91免费观看在线| 精品久久久影院| 亚洲bdsm女犯bdsm网站| 99re成人在线| 国产精品动漫网站| 国产91精品欧美| 久久嫩草精品久久久精品一| 麻豆专区一区二区三区四区五区| 欧美在线不卡一区| 亚洲品质自拍视频网站| 成人h动漫精品一区二区| 精品国产伦一区二区三区观看体验| 亚洲成av人在线观看| 色先锋资源久久综合| 国产精品欧美极品| 国产成人在线电影| 国产日韩影视精品| 国产一区二区三区在线观看免费视频 | 激情六月婷婷久久| 欧美一区二区久久| 美女性感视频久久| 日韩午夜在线播放| 日本vs亚洲vs韩国一区三区二区 | 91精品在线免费观看| 亚洲成人精品影院| 在线观看亚洲专区| 亚洲国产日韩综合久久精品| 在线视频你懂得一区| 夜夜精品浪潮av一区二区三区| 色综合天天综合网天天狠天天| 亚洲男人电影天堂| 欧美性色欧美a在线播放| 亚洲一二三专区| 欧美日韩精品一区二区| 日本伊人色综合网| 欧美精品一区二区三区视频| 国产在线麻豆精品观看| 欧美一级黄色录像| 欧美激情在线一区二区三区| 日韩一区二区影院| 成人av在线资源网站| 成年人午夜久久久| 99久久精品国产网站| 91网站在线播放| 国产精一区二区三区| 视频一区二区三区中文字幕| 亚洲欧美电影院| 久久午夜羞羞影院免费观看| 欧美成人一区二区| 2023国产精品自拍| 日本一区二区动态图| 中文字幕一区二区5566日韩| 亚洲黄色尤物视频| 天天影视涩香欲综合网| 精品午夜久久福利影院| 青椒成人免费视频| 丰满亚洲少妇av| 色老汉av一区二区三区| 欧美tickling挠脚心丨vk| 国产日产精品一区| 日韩国产一二三区| 91在线观看一区二区| 国产日韩精品久久久| 亚洲在线视频网站| 亚洲h在线观看| 激情欧美一区二区三区在线观看| 美腿丝袜在线亚洲一区| 色呦呦国产精品| 91精品婷婷国产综合久久性色| 九九视频精品免费| 亚洲欧美中日韩| 欧美美女一区二区三区| 国产成人小视频| 亚洲成人资源网| 国产欧美一区二区精品久导航 | 美女网站一区二区| 136国产福利精品导航| 欧美一区三区二区| 成人国产在线观看| 美女在线视频一区| 欧美中文字幕一区二区三区亚洲| 欧美videossexotv100| 亚洲自拍偷拍欧美| 国产综合久久久久久久久久久久| 国产91高潮流白浆在线麻豆 | 激情综合色综合久久| 高潮精品一区videoshd| 日韩欧美一级二级三级久久久| 最新日韩av在线| 国产一区二区看久久| 久久精品欧美一区二区三区麻豆|