PygameのRect領域位置の利用(グラフ)
Rect(矩形)は長方形、つまり矩形のことで、Pygameでは指定した位置とサイズの矩形領域を作成するためにRect()メソッドを使用します。この関数の構文は次のような形式になっています。
rect = pygame.Rect(left,top,width,height)
Rectで表現される領域は、ゲームのメインウィンドウ(画面)のようなSurfaceオブジェクトの上にある必要があります。上記の方法は、left, top, width, height の4つの主要なパラメータ値で構成されていますが、これらの距離の意味を理解しやすくするために、以下の図を示します。
注:Pygameでは、メインゲームウィンドウの左上隅が原点として使用されます。
以下の簡単な使用例一式をご覧ください。
import pygame
pygame.init()
screen = pygame.display.set_mode((500,300))
pygame.display.set_caption('c language Chinese')
image_surface = pygame.image.load("C:/Users/Administrator/Desktop/c-net.png")
rect1 = pygame.Rect(50,50,100,100)
# Create a new child (surface object) based on the original image
image_child = image_surface.subsurface(rect1)
rect2 = image_child.get_rect()
# The output rectangle size is 100*100
print(rect2)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
# Display the area of the subgraph on the screen
screen.blit(image_child,rect1)
pygame.display.update()
プログラムは次のように実行されます。
図1:プログラム実行結果
上記の実行結果からわかるように、画像上にrect1と同じ大きさの矩形領域(100*100)を横取りしています。
また、Rectオブジェクトには、いくつかの共通メソッドが用意されています。次の表に示すとおりです。
<テーブル メソッド 説明 pygame.Rect.copy()。 矩形をコピーする pygame.Rect.move()を実行します。 リスト引数で矩形領域を移動します。 pygame.Rect.move_ip()を実行します。 矩形を移動する(ノーリターン) pygame.Rect.inflate()を実行します。 矩形の大きさを増減させる pygame.Rect.clamp()を使用します。 矩形を別の矩形の内側に移動させる pygame.Rect.union()を使用します。 2つの矩形をマージした矩形を返します。 pygame.Rect.fit()を使用します。 矩形を縦横比でリサイズまたは移動します。 pygame.Rect.contains()を使用します。 ある矩形が別の矩形の中にあるかどうかをテストする pygame.Rect.collidepoint()を使用します。 点が矩形の内側にあるかどうかをテストします pygame.Rect.colliderect()を使用します。 2つの矩形が重なっているかどうかをテストする
また、Rectオブジェクトは、以下のように、矩形のサイズに関するいくつかの共通プロパティを提供します。
x,y describes the distance of the rectangle from the x and y axes
top, left, bottom, right # describes the size of the rectangle in the coordinate system
topleft, bottomleft, topright, bottomright #returns a tuple describing the size of the rectangle
midtop, midleft, midbottom, midright #returns a tuple describing the size of the rectangle
center, centerx, centery #(centerx, centery) represents the value of the central coordinate (x,y) of the rectangle
size, width, height
w,h # for describing the width, height of the rectangle
以下のように、簡単なサンプルデモのセットをご覧ください。
import pygame
# Corresponding to left/top/width/height
rect1 = pygame.Rect(0,0,100,100)
print('The value of x is {}; the value of y is {}'.format(rect1.x,rect1.y))
print('The value of bottom is {}; the value of right is {}'.format(rect1.bottom,rect1.right))
# Set the centering distance
print(rect1.center,rect1.centerx,rect1.centery)
# Return value is (centerx,top)
print(rect1.midtop)
# Return a tuple of values (right,centery)
print(rect1.midright)
# Return value of (left,bottom)
print(rect1.bottomleft)
# return the size of the rectangular area, tuple format
print(rect1.size)
出力は次のようになります。
xの値は0であり、yの値は0である
bottomの値は100で、rightの値は100です。
# セットセンターエフォート
(50, 50) 50 50
(50, 0)
#ミッドライト
(100, 50)
#bottomleft
(0, 100)
#サイズ
(100, 100)
また、以下のようにプロパティペアで矩形領域の大きさを設定、または変更することができます。
rect1.left = 30
rect1.center = (70,70)
Rect オブジェクトから矩形領域を構築する以外に、rect プロパティを使用して矩形領域を構築することもできます。Pygameには、以下のようなrect属性を提供する関数が多数あります。
surface.fill((0,0,255),rect=(100,100,100,50))
上記のコードは、サーフェスオブジェクトの領域内の矩形領域を選択し、その領域を青色(RGB(0,0,255))で塗りつぶしています。
PygameのRect領域位置(グラフィック)の使い方についての記事は以上ですが、PygameのRect領域位置についての詳しい情報は、Script Houseの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。
関連
-
[解決済み】 Regex: AttributeError: 'NoneType' オブジェクトには 'groups' という属性がありません。
-
pygame.error:ビデオシステムが初期化されていない場合の解決方法
-
Djangoプロジェクトの構成は、独立した実装を分割する
-
[解決済み] ctypes error: libdc1394 error: libdc1394 の初期化に失敗しました。
-
[解決済み] AttributeError: 'NoneType' オブジェクトには 'lower' 属性がない python
-
[解決済み] 文字列の先頭と末尾のゼロを削除するには?Python
-
[解決済み] Pythonで文字列のヌルバイトを見つけるには?
-
[解決済み] PyCharm Community Editionでマウスの右クリックコンテキストメニューからDjangoアプリケーションのUnitTestsを実行/デバッグしますか?
-
[解決済み] Python インデックスエラー value not in list...on .index(value)
-
[解決済み] scrapyとpythonを使ったtsetmc.comのウェブページからのウェブスクレイピング
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】改行がないファイルを読み込むには?
-
[解決済み】Python TypeError: object.__format__ に渡される空でないフォーマット文字列
-
[解決済み] python はモジュールをインポートできるのに pytest はできない
-
[解決済み] Django で {% block content %} と {% endblock content %} は何のためにあるのですか?
-
[解決済み] ImportError: dateutil.parserという名前のモジュールはありません。
-
[解決済み] matlab の "bwconncomp" と "label matrix" に相当する python の関数はありますか?
-
[解決済み] AttributeError: 'unicode' オブジェクトには XXX という属性がありません。
-
[解決済み] Python - % でサポートされていないオペランド型: 'list' および 'int' です。
-
[解決済み] Biopython(Python)を使ってFASTAファイルから配列を抽出する。
-
ターミナルでpipコマンドを使用するとプロンプトが表示されます。ランチャーで致命的なエラーが発生しました。Unable to create process using '"' と表示されます。