溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用python編寫一個(gè)表白神器

發(fā)布時(shí)間:2021-01-04 14:21:46 來(lái)源:億速云 閱讀:149 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)使用python編寫一個(gè)表白神器,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

代碼展示:

import sys
import pygame
import random

# 游戲的高寬
WIDTH, HEIGHT = 640, 360
# 把顏色值(230, 230, 230)賦值給 bg_color 變量
# 三個(gè)整數(shù)依次是三原色中紅色、綠色和藍(lán)色的濃度值。濃度值是一個(gè)整數(shù),最大為255,最小為0。
bg_color = (255, 255, 255)
button_text_list = ['徐以鵬比易烊千璽帥億點(diǎn)', '徐以鵬脾氣好', '徐以鵬會(huì)洗衣服', '徐以鵬體貼']


# 點(diǎn)擊喜歡按鈕后顯示的頁(yè)面
def show_like_interface(text, screen, color=(255, 0, 0)):
  screen.fill(bg_color)
  font = pygame.font.Font('./font/simkai.ttf', WIDTH // (len(text)))
  textRender = font.render(text, True, color)
  textRect = textRender.get_rect()
  textRect.midtop = (WIDTH / 2, HEIGHT / 2)
  screen.blit(textRender, textRect)
  pygame.display.update()
  while True:
    for event in pygame.event.get():
      if event.type == pygame.QUIT:
        pygame.quit()
        sys.exit()


# 按鈕
def button(text, x, y, w, h, color, screen):
  pygame.draw.rect(screen, color, (x, y, w, h))
  font = pygame.font.Font('./font/simkai.ttf', 20)
  textRender = font.render(text, True, (0, 0, 0))
  textRect = textRender.get_rect()
  textRect.center = ((x + w / 2), (y + h / 2))
  screen.blit(textRender, textRect)


# 標(biāo)題
def title(text, screen, scale, color=(0, 0, 0)):
  # pygame.font.Font("字體","字號(hào)",*)
  font = pygame.font.Font('./font/simkai.ttf', WIDTH // (len(text) * 2))
  # 使用已有的文本創(chuàng)建一個(gè)位圖image,返回值為一個(gè)image;對(duì)于位圖可用get_height(),get_width()的方法獲得高與寬;True表示是否抗鋸齒,第三個(gè)為字體顏色,還可以有第四個(gè)為背景色,沒(méi)有時(shí)就為默認(rèn)的透明;
  textRender = font.render(text, True, color)
  # Rect對(duì)象有一些重要的屬性,如:top,botton,letf、right表示上下左右
  # width,height表示寬高  我有這些值之后,對(duì)于我們編寫程序十分方便
  textRect = textRender.get_rect()
  # 中央x坐標(biāo)整數(shù)值 頂部y坐標(biāo)的整數(shù)值
  textRect.midtop = (WIDTH / scale[0], HEIGHT / scale[1])
  # 將位圖繪制到屏幕上,screen為建立的主屏;
  screen.blit(textRender, textRect)

  # 生成隨機(jī)的位置坐標(biāo)


def get_random_pos():
  x, y = random.randint(20, WIDTH - 20), random.randint(20, HEIGHT - 20)
  return x, y


def main():
  text = "不行"
  # 在我們要?jiǎng)邮钟盟瓿晌覀兊南敕ㄖ?,電腦這個(gè)強(qiáng)迫癥需要我們檢查一遍,這個(gè)工具包是否完整,能否正常給我們提供幫助。而這個(gè)檢查的動(dòng)作, pygame.init()  檢查,電腦上一些需要的硬件調(diào)用接口、基礎(chǔ)功能是否有問(wèn)題。如果有,他會(huì)在程序運(yùn)行之前就反饋給你,方便你進(jìn)行排查和規(guī)避。

  # 對(duì)pygame內(nèi)部各種功能進(jìn)行初始化創(chuàng)建及變量設(shè)置,比如pygmae里面的窗體,鍵盤的使用的事件隊(duì)列,等等都需要我們pygame.init()初始化
  pygame.init()
  # 調(diào)用 display 模塊的 set_mode 函數(shù),作用是初始化屏幕對(duì)象(也即窗口對(duì)象)。此處傳入一個(gè)參數(shù),即(640, 360)元組,這使得窗口的分辨率是640*360
  screen = pygame.display.set_mode((WIDTH, HEIGHT))
  # 窗口標(biāo)題
  pygame.display.set_caption("小徐的表白")
  # 不喜歡按鈕的初始位置和大小
  unlike_pos_x = 330
  unlike_pos_y = 250
  unlike_pos_width = 100
  unlike_pos_height = 50

  # 喜歡按鈕的初始位置和大小
  like_pos_x = 180
  like_pos_y = 250
  like_pos_width = 100
  like_pos_height = 50
  # 標(biāo)識(shí)位,作為小姐姐之后點(diǎn)擊了同意后退出的標(biāo)準(zhǔn)
  running = True
  # 按鈕顏色
  like_color = (216, 191, 216)
  while running:

    # 填充屏幕背景色
    # 顯示窗口背景填充bg_color眼神
    screen.fill(bg_color)
    # 加載圖片,從文件加載新圖片
    img = pygame.image.load("./imgs/3.jpg")
    # Surface對(duì)象與圖像時(shí)一一對(duì)應(yīng)關(guān)系
    # 簡(jiǎn)單理解在pygame里導(dǎo)入的任何圖片都是Surface對(duì)象
    # pygame使用內(nèi)部定義的Surface對(duì)象表示所有載入的圖像,其中g(shù)et_rect()反法返回一個(gè)覆蓋圖像的矩形Rect對(duì)象
    # Rect對(duì)象有一些重要的屬性,如:top,botton,letf、right表示上下左右
    # width,height表示寬高  我有這些值之后,對(duì)于我們編寫程序十分方便
    imgRect = img.get_rect()
    # 圖片位置
    # 中央x坐標(biāo)整數(shù)值 頂部y坐標(biāo)的整數(shù)值
    imgRect.midtop = 80, 10
    # 將一個(gè)圖像繪制在一個(gè)圖像上,及將img繪制在imgRect位置上。通過(guò)Rect對(duì)象上引導(dǎo)對(duì)圖片的繪制
    screen.blit(img, imgRect)
    # 監(jiān)聽事件
    # pygame.event.get() 的作用是獲取事件列表。事件列表內(nèi)包含0個(gè)或多個(gè)事件對(duì)象 (點(diǎn)擊 鼠標(biāo)移動(dòng) 關(guān)閉窗口)
    # 依次賦值給 event 變量
    for event in pygame.event.get():
      # 檢測(cè)到鼠標(biāo)
      if event.type == pygame.MOUSEBUTTONDOWN:
        # 獲取鼠標(biāo)位置
        mouse_pos = pygame.mouse.get_pos()
        # 若點(diǎn)擊了喜歡按鈕,停止 while 循環(huán)
        if mouse_pos[0] < like_pos_x + like_pos_width and mouse_pos[0] > like_pos_x and mouse_pos[
          1] < like_pos_y + like_pos_height and mouse_pos[1] > like_pos_y:
          like_color = bg_color
        running = False
      # 獲取鼠標(biāo)位置
      # 若鼠標(biāo)位置位于按鈕區(qū)域內(nèi)
      # 則隨機(jī)生成按鈕位置進(jìn)行顯示
    mouse_pos = pygame.mouse.get_pos()
    if mouse_pos[0] < unlike_pos_x + unlike_pos_width and mouse_pos[0] > unlike_pos_x and \
        mouse_pos[1] < unlike_pos_y + unlike_pos_height and mouse_pos[1] > unlike_pos_y:
      while True:
        unlike_pos_x, unlike_pos_y = get_random_pos()
        text = button_text_list[random.randint(0, len(button_text_list) - 1)]
        if mouse_pos[0] < unlike_pos_x + unlike_pos_width and mouse_pos[0] > unlike_pos_x and \
            mouse_pos[1] < unlike_pos_y + unlike_pos_height and mouse_pos[1] > unlike_pos_y:
          continue
        break
    title('寶貝,我觀察你很久了', screen, scale=[1.8, 10])
    title('做我女朋友好不好呀', screen, scale=[1.8, 3])
    button('好的', like_pos_x, like_pos_y, like_pos_width,
        like_pos_height, like_color, screen)
    button(text, unlike_pos_x, unlike_pos_y, unlike_pos_width,
        unlike_pos_height, (216, 191, 216), screen)
    # 顯示游戲
    # 刷新屏幕,以使最近的繪制操作生效。
    pygame.display.flip()
    # 對(duì)窗口進(jìn)行更新
    pygame.display.update()
  # 創(chuàng)建Clock對(duì)象,用于操作時(shí)間
  # tick(60)控制幀速度,即窗口刷新速度,每秒鐘60次幀刷新,視頻中每次展示的靜態(tài)圖像稱為幀
  pygame.time.Clock().tick(60)
  show_like_interface('我就知道小姐姐你也喜歡我~', screen, color=(0, 0, 0))


# 表示程序的主入口。所以以后為了避免該文件被外部文件調(diào)用,一般建議加上
if __name__ == '__main__':
  main()

看完上述內(nèi)容,你們對(duì)使用python編寫一個(gè)表白神器有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI