星際爭霸之小霸王之小蜜蜂(二)--類的使用

目錄

前言

一、將設置內容寫在一個類里

?二、設置小蜜蜂的造型

?三、設置貓蜜蜂的參數

?四、繪制貓蜜蜂到窗口

?總結


前言

昨天我們設置好了窗口,下面我們需要向窗口中添加元素了。

一、將設置內容寫在一個類里

?我個人理解書上的意思是要創建一個類,將所有需要設置的屬性都放在這里,這樣后期需要升級改變的時候,在這里修改參數就行了,例如我們昨天設置的窗口背景顏色,可以將這個參數設置放在設置類里,需要的時候再調用,這就是面向對象的編程思維。那么我們現在建立一個settings文件,在里面創建一些參數。代碼如下:

class Settings():def __init__(self):self.screen_width = 800self.screen_height = 600self.bg_color = (220,220,220)

?可以看出,我們創建了窗口的長和寬,然后設置了顏色,顏色我做了修改,感覺昨天的青色不好看。現在我們需要修改alien_invasion文件里的代碼,導入這個類,從而調用這些參數,我們看代碼。

import sys
import pygame
import settingsdef run_game():pygame.init()new_setting=settings.Settings()screen = pygame.display.set_mode((new_setting.screen_width,new_setting.screen_height))pygame.display.set_caption("Alien Invasion")while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()screen.fill(new_setting.bg_color)pygame.display.flip()run_game()

?可以看出,我們首先使用import導入我們創建的類,然后實例化setting類,實例為new_setting,最后通過new_setting調用提前設置好的參數。單看這一段代碼來說比之前好像要復雜一點,也要難理解一點,但是當你的程序達到一定的復雜度以后,這樣分類編寫會更容易維護。下面我們來看一下效果。

?

?運行成功,顏色也變成了灰色(我看是灰色)

?二、設置小蜜蜂的造型

?書上說,pygame默認使用bmp位圖,使用其他的文件類型,要安裝庫,這么麻煩嗎?在網上找一下說明看看。

pygame.image.load可以加載多種類型的圖片文件,包括但不限于:

  • BMP
  • GIF
  • JPG/JPEG
  • PNG
  • TGA
  • TIFF
  • WebP

需要注意的是,如果加載的圖片文件不是pygame支持的格式,將會拋出異常。

?按照網上說的,pygame支持的格式有很多啊,我們就偏偏用JPG格式試試(我個人就喜歡jpg格式)

?現在我們需要注意兩點:一是背景為透明的jpg圖片,二是免費的。找了半天沒找到,為了不浪費時間,找了一只貓,湊合用吧,大家欣賞下。

?

?三、設置貓蜜蜂的參數

?按照之前的編程思維,我們要創建單獨的類來定義這只貓蜜蜂的各種屬性,包括大小、位置、動作等。跟書上一樣,我們創建ship文件,不知道為什么命名為ship,ship不是船的意思嗎?

?首先我們先展示類里面的代碼:

import pygameclass Ship():def __init__(self,screen):self.screen = screenself.image = pygame.image.load('cat.webp')self.rect = self.image.get_rect()self.screen_rect = screen.get_rect()self.rect.centerx = self.screen_rect.centerxself.rect.bottom=self.screen_rect.bottomdef blitme(self):self.screen.blit(self.image,self.rect)

?這一段代碼不是很好理解,書上講的也不是很清楚,我先說說我的初步理解,后面如果發現錯了,再進行解釋。

首先初始化方法里傳入的screen就是我們的窗口,然后我們導入我們下載好的圖片“cat.webp”(我們看看這個格式能不能直接用)。

self.rect = self.image.get_rect()這段代碼就是獲取圖片的邊框,同理,下面的代碼就是獲取窗口的邊框,然后通過centerx和bottom屬性將圖片實現在屏幕最下邊居中對齊。

最后我們定義了blitme方法,它里面調用了pygame的blit函數,blit函數的作用就是將圖片繪制到屏幕上,self.rect已經設置好了位置。

?四、繪制貓蜜蜂到窗口

?下面我們只需要在主程序調用Ship類的blitme方法就可以繪制貓蜜蜂到指定位置。

import sys
import pygame
import settings
from ship import Shipdef run_game():pygame.init()new_setting=settings.Settings()screen = pygame.display.set_mode((new_setting.screen_width,new_setting.screen_height))ship = Ship(screen)pygame.display.set_caption("Alien Invasion")while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()screen.fill(new_setting.bg_color)ship.blitme()pygame.display.flip()run_game()

?這段代碼就沒有設么好解釋的了,只是調用函數。我們直接看效果。

?

?成功了,證明圖片的格式不是bmp也是可以的,但是我們的貓蜜蜂有點太大了,我們需要把它改小一點,最好在窗口里像一只小蒼蠅,這里就不贅述怎么改了,我們直接看效果。

?

?嗯,這樣效果好多了。

?總結

?今天主要學習如何設置繪制圖像的位置,以及如何繪制。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40883.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40883.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40883.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于CentOS 7 部署社區版Haproxy

HAProxy是法國開發者 威利塔羅(Willy Tarreau) 在2000年使用C語言開發的一個開源軟件,是一款具 備高并發(一萬以上)、高性能的TCP和HTTP負載均衡器,支持基于cookie的持久性,自動故障切換,支 持正則表達式及web狀態統計。 目錄 1…

Linux:shell腳本 正則表達式與AWK

一、正則表達式 由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能,類似于增強版的通配符功能,但與通配符不同,通配符功能是用來處理文件…

【LeetCode每日一題】——128.最長連續序列

文章目錄 一【題目類別】二【題目難度】三【題目編號】四【題目描述】五【題目示例】六【題目提示】七【解題思路】八【時間頻度】九【代碼實現】十【提交結果】 一【題目類別】 哈希表 二【題目難度】 中等 三【題目編號】 128.最長連續序列 四【題目描述】 給定一個未…

python re 模塊 正則表達式

一、正則表達式基本符號 ^ 表示匹配字符串的開始位置 (例外 用在中括號中[ ] 時,可以理解為取反,表示不匹配括號中字符串)$ 表示匹配字符串的結束位置* 表示匹配 零次到多次(記憶方法:符號是星星,天上的星星可以是無數個也可以看不到&#x…

vue3+element-plus表格默認排序default-sort失效問題

場景 在使用動態數據渲染的場景&#xff0c;el-table設置默認屬性default-sort失效。 原因 el-table的default-sort屬性是針對靜態數據的&#xff0c;如果是動態數據&#xff0c;default-sort則無法監聽到。 案例&#xff1a;靜態數據 <template><el-table:data&…

馬斯克又出昏招、最瘋狂的舉動之一

馬斯克正在限制他不喜歡的新聞網站和競爭對手的流量。在 X&#xff08;原 Twitter&#xff09;上點擊紐約時報、路透社、Facebook、Instagram、Threads、Bluesky 和 Substack 的鏈接&#xff0c;X 故意增加 5 秒鐘的開啟延遲。 5 秒延遲&#xff0c;新的降權舉措&#xff1f; …

rust踩雷筆記(2)——一道hard帶來的思考[哈希表、字符串、滑動窗口]

今天被一道hard惡心壞了&#xff0c;算法不難&#xff0c;用C幾分鐘的事。用rust主要還是缺乏對語言的熟練度&#xff0c;記錄一下&#xff0c;主要的坑在下面這個操作&#xff1a; 對String取其中某個位置的char。 可能你會有疑問&#xff1a;這不是直接nth()取就行了么。沒錯…

聯想拯救者筆記本Win11系統鍵盤無法打字解決參考方法

一位好機友新購買的聯想拯救者筆記本在使用過程中突然發現整個鍵盤都不能使用了、不能打字、按任何按鍵都沒有反應&#xff0c;只有鼠標能正常操作&#xff1b;那么這是什么問題呢&#xff1f;能不能是筆記本的鍵盤壞了呢&#xff1f;還是筆記本出現了什么故障而引起鍵盤失靈呢…

LangChain手記 Evalutation評估

整理并翻譯自DeepLearning.AILangChain的官方課程&#xff1a;Evaluation&#xff08;源代碼可見&#xff09; 基于LLM的應用如何做評估是一個難點&#xff0c;本節介紹了一些思路和工具。 “從傳統開發轉換到基于prompt的開發&#xff0c;開發使用LLM的應用&#xff0c;整個工…

Linux 終端會話中,啟動任務并放到后臺運行

一、需求 linux要執行一個腳本&#xff0c;耗時很長&#xff0c;想要腳本在后臺運行&#xff0c;用戶注銷或終端軟件關閉時也可以繼續運行。 二、實現 1、nohup命令 腳本在后臺運行 nohup 是在 Linux 和類 Unix 系統中使用的一個命令&#xff0c;用于在后臺運行程序&#x…

Python爬蟲——scrapy_當當網圖書管道封裝

創建爬蟲項目 srcapy startproject scrapy_dangdang進入到spider文件里創建爬蟲文件&#xff08;這里爬取的是青春文學&#xff0c;仙俠玄幻分類&#xff09; srcapy genspider dang http://category.dangdang.com/cp01.01.07.00.00.00.html獲取圖片、名字和價格 # 所有的se…

c語言——查找特定字符在字符串中出現的次數

fgets 函數用于從標準輸入&#xff08;stdin&#xff09;中讀取一行字符串&#xff0c; 并將其存儲在指定的字符數組 str 中。 sizeof str/sizeof str[0] 是用來計算字符數組 str 的大小。 這個表達式計算的結果是字符數組 str 可以容納的元素個數&#xff08;包括…

【IMX6ULL驅動開發學習】07.驅動程序分離的思想之平臺總線設備驅動模型和設備樹

一、驅動程序分離的思想 【IMX6ULL驅動開發學習】05.字符設備驅動開發模板&#xff08;包括讀寫函數、poll機制、異步通知、定時器、中斷、自動創建設備節點和環形緩沖區&#xff09;_阿龍還在寫代碼的博客-CSDN博客 之前編寫驅動程序的代碼存在不少弊端&#xff1a;移植性差…

數學建模之“聚類分析”原理詳解

一、聚類分析的概念 1、聚類分析&#xff08;又稱群分析&#xff09;是研究樣品&#xff08;或指標&#xff09;分類問題的一種多元統計法。 2、主要方法&#xff1a;系統聚類法、有序樣品聚類法、動態聚類法、模糊聚類法、圖論聚類法、聚類預報法等。這里主要介紹系統聚類法…

神經網絡基礎-神經網絡補充概念-25-深層神經網絡

簡介 深層神經網絡&#xff08;Deep Neural Network&#xff0c;DNN&#xff09;是一種具有多個隱藏層的神經網絡&#xff0c;它可以用來解決復雜的模式識別和特征學習任務。深層神經網絡在近年來的機器學習和人工智能領域中取得了重大突破&#xff0c;如圖像識別、自然語言處…

Windows環境下安裝RabbitMQ

1.消息隊列中間件簡介 消息隊列中間件是分布式系統中重要的組件&#xff0c;主要解決應用耦合&#xff0c;異步消息&#xff0c;流量削鋒等問題實現高性能&#xff0c;高可用&#xff0c;可伸縮和最終一致性。 使用較多的消息隊列有 ActiveMQ&#xff08;安全&#xff09;&…

【腳踢數據結構】隊列(順序和鏈式)

(??? )&#xff0c;Hello我是祐言QAQ我的博客主頁&#xff1a;C/C語言,Linux基礎,ARM開發板&#xff0c;軟件配置等領域博主&#x1f30d;快上&#x1f698;&#xff0c;一起學習&#xff0c;讓我們成為一個強大的攻城獅&#xff01;送給自己和讀者的一句雞湯&#x1f914;&…

Ant Design Vue 下拉框輸入框 可以輸入 可以查詢

Ant Design Vue 下拉框 可以輸入 可以查詢 直接上代碼 效果圖 &#xff08;輸入內容查詢后端 返回下拉的值 &#xff0c;如何查詢后端是空的直接 把輸入的內容 賦值給 輸入框&#xff09; 在這里插入圖片描述 <template><div><a-selectv-model.lazy"i…

WPF CommunityToolkit.Mvvm

文章目錄 前言ToolkitNuget安裝簡單使用SetProperty&#xff0c;通知更新RealyCommandCanExecute 新功能&#xff0c;代碼生成器ObservablePropertyNotifyCanExecuteChangedForRelayCommand其他功能對應關系 NotifyPropertyChangedFor 前言 CommunityToolkit.Mvvm&#xff08;…

自適應AI chatgpt智能聊天創作官網html源碼

我們致力于開發先進的自適應AI智能聊天技術&#xff0c;旨在為用戶提供前所未有的聊天體驗。通過融合自然語言處理、機器學習和深度學習等領域的頂尖技術&#xff0c;我們的智能聊天系統能夠準確理解用戶的需求并給出相應的回應。 我們的自適應AI智能聊天系統具備以下核心特點…