邊框檢測在 Python 中的應用
1、問題背景:
-
使用者試圖編寫一個程式,該程式要求使用者輸入一個數字,然後在螢幕上繪製相應數量的矩形。
-
然而,這些矩形不能重疊。
-
使用者借鑑了 Al Sweigart 書中的邊框檢測方法,但遇到了問題,希望尋求幫助。
2、解決方案:
-
為了解決這個問題,有幾種方法可以嘗試:
-
方法 1:隨機放置矩形並進行測試
-
這種方法會隨機放置矩形,然後測試新矩形的任何點是否在任何現有矩形內。
-
如果有重疊,則繼續生成矩形,直到不再有重疊。
-
這種方法非常慢且效率低下。
-
-
方法 2:限制隨機範圍
-
這種方法可以對隨機值進行編號,以便只在可用的位置生成矩形。
-
這可以以多種方式實現,可能需要一些時間和精力來實現。
-
-
方法 3:調整矩形座標
-
這種方法與方法 1 類似,但當矩形的 4 個點的座標重疊時,可以調整這些點的位置。
-
可以透過將違規座標設定為其中一個角的座標,然後新增或減去一定數值來實現。
-
也可以基於修改後的點重新生成違規矩形,或者將所有點與違規點等距離地移動。
-
這可能是最好的選擇,除非對隨機原則非常嚴格。
-
-
-
以下是一些程式碼示例,展示瞭如何實現方法 3:
import pygame
import random
# 設定遊戲視窗大小
WINDOWWIDTH = 600
WINDOWHEIGHT = 600
# 設定背景顏色
WHITE = ( 255, 255, 255)
# 建立遊戲視窗
windowSurface = pygame. display. set_mode(( WINDOWWIDTH, WINDOWHEIGHT), 0, 32)
pygame. display. set_caption( 'Rectangles')
# 設定矩形顏色
colors = [ BLACK, RED, GREEN, BLUE]
# 隨機生成矩形數量
num_rectangles = random. randint( 1, 10)
# 矩形列表
rectangles = []
# 生成矩形
for i in range( num_rectangles):
while True:
# 生成隨機矩形座標
x1, y1 = random. randint( 1, WINDOWWIDTH), random. randint( 1, WINDOWHEIGHT)
x2, y2 = random. randint( x1, WINDOWWIDTH), random. randint( y1, WINDOWHEIGHT)
# 檢查矩形是否與其他矩形重疊
overlap = False
for rect in rectangles:
if rect. colliderect( pygame. Rect( x1, y1, x2 - x1, y2 - y1)):
overlap = True
break
# 如果不重疊,則退出迴圈
if not overlap:
break
# 新增矩形到列表
rectangles. append( pygame. Rect( x1, y1, x2 - x1, y2 - y1))
# 填充背景
windowSurface. fill( WHITE)
# 繪製矩形
for rect in rectangles:
pygame. draw. rect( windowSurface, random. choice( colors), rect)
# 更新視窗
pygame. display. update()
# 等待使用者退出
while True:
for event in pygame. event. get():
if event. type == QUIT:
pygame. quit()
sys. exit()
-
該程式碼生成指定數量的矩形,並在它們不重疊的情況下隨機放置它們。
-
矩形使用
pygame.Rect
類表示,該類具有colliderect()
方法,可以用來檢查矩形是否與其他矩形重疊。 -
如果矩形重疊,則重新生成矩形,直到找到一個不重疊的矩形。
-
最後,所有生成的矩形都會被繪製到遊戲視窗中。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70034537/viewspace-3008918/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 機器學習在實時性欺詐檢測中的應用案例機器學習
- redis在python中的應用RedisPython
- 深度學習技術在網路入侵檢測中的應用深度學習
- 機器學習在交通標誌檢測與精細分類中的應用機器學習
- JDBC 在效能測試中的應用JDBC
- 在 .NET Core 中應用六邊形架構架構
- 小程式中button的邊框無法去除 button邊框如何去除
- [機器視覺]halcon應用例項 邊緣檢測視覺
- 機器視覺技術在木材加工質量檢測中的應用視覺
- BurpSuite在非Web應用測試中的應用UIWeb
- 單元測試在Unity中的應用Unity
- 影像的邊緣檢測
- python 裝飾器在介面自動化測試中的應用Python
- python裝飾器在介面自動化測試中的應用Python
- R語言中na.omit函式的應用 以及 在資料框中的應用R語言MIT函式
- python+opencv邊緣檢測方法整理PythonOpenCV
- 探索OnRobot夾爪|RG2-FT在玻璃質量檢測中的應用
- 管道檢測機器人在河道整治中的應用機器人
- 行為驅動開發在 Python 開發測試中的應用Python
- 感測器在自動駕駛中的應用自動駕駛
- 在網頁中實現細線邊框的兩種方法(轉)網頁
- 影像邊緣檢測
- 全志T3核心板在輸電線路影像檢測中的應用
- opencv——自適應閾值Canny邊緣檢測OpenCV
- php+js中多選項(複選)框的檢測PHPJS
- Python-OpenCV 處理影象(五):影象中邊界和輪廓檢測PythonOpenCV
- CSS 邊框陰影立體邊框CSS
- 在.Net中json應用測試整理JSON
- 如何用OpenCV在Python中實現人臉檢測OpenCVPython
- 大模型在程式碼缺陷檢測領域的應用實踐大模型
- python如何檢測pygame中的碰撞PythonGAM
- 邊聊邊複製,邊修改邊測試,利用chatgpt用laravel框架做一個部落格應用ChatGPTLaravel框架
- Web應用課 第三講 文字、字型、背景、邊框、展示格式Web
- 表格的邊距 邊框設定
- 邊緣檢測演算法——Canny和LoG邊緣檢測演算法演算法
- 機器推理系列第二彈:機器推理在事實檢測任務中的應用
- 數字證書及其在安全測試中的應用
- HBase在移動廣告監測產品中的應用