Pygame入門 ブロック崩しのパドルをマウスで動かす
import pygame import sys SCREEN = pygame.Rect(0, 0, 400, 400) FPS = 30 WHITE = (255, 255, 255) GREEN = (0, 255, 0) PADDLE_WIDTH = 60 PADDLE_HEIGHT = 20 PADDLE_POS_Y = SCREEN.bottom - PADDLE_HEIGHT * 2 pygame.init() clock = pygame.time.Clock() screen = pygame.display.set_mode(SCREEN.size) paddle = pygame.Surface((PADDLE_WIDTH, PADDLE_HEIGHT)) paddle.fill(GREEN) while True: screen.fill(WHITE) PADDLE_POS_X = pygame.mouse.get_pos()[0] if PADDLE_POS_X > (SCREEN.right - PADDLE_WIDTH): PADDLE_POS_X = SCREEN.right - PADDLE_WIDTH screen.blit(paddle, (PADDLE_POS_X, PADDLE_POS_Y)) pygame.display.update() clock.tick(FPS) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit()
Pygame入門 画像をSpriteにして動かす
import pygame import sys SCREEN = pygame.Rect(0, 0, 400, 400) WHITE = (255, 255, 255) class Ball(pygame.sprite.Sprite): def __init__(self, image_file, pos, speed): pygame.sprite.Sprite.__init__(self) x, y = pos vx, vy = speed self.image = pygame.image.load(image_file) w = self.image.get_width() h = self.image.get_height() self.rect = pygame.Rect(x, y, w, h) self.vx = vx self.vy = vy def update(self): self.rect.move_ip(self.vx, self.vy) if self.rect.left < SCREEN.left or SCREEN.right < self.rect.right: self.vx = -self.vx if self.rect.top < SCREEN.top or SCREEN.bottom < self.rect.bottom: self.vy = -self.vy self.rect = self.rect.clamp(SCREEN) def draw(self, surface): surface.blit(self.image, self.rect) def main(): pygame.init() screen = pygame.display.set_mode(SCREEN.size) ball = Ball('ball.png', (200, 200), (5, 10)) clock = pygame.time.Clock() while True: clock.tick(30) screen.fill(WHITE) ball.update() ball.draw(screen) pygame.display.update() for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() main()
実行結果
Pygame入門 画像を動かす
import pygame import sys SCREEN = pygame.Rect(0, 0, 400, 400) FPS = 30 WHITE = (255, 255, 255) def main(): pygame.init() clock = pygame.time.Clock() screen = pygame.display.set_mode(SCREEN.size) ball = pygame.image.load('ball.png') ball_width = ball.get_size()[0] ball_height = ball.get_size()[1] ball_x = 100 #ballの初期x座標 ball_y = 200 #ballの初期y座標 ball_dx = 5 #ballのx座標移動量 ball_dy = 5 #ballのy座標移動量 while True: screen.fill(WHITE) screen.blit(ball, (ball_x, ball_y)) #画面の左端か右端に移動したら、x座標の移動方向を変える if (ball_x < SCREEN.left) or (SCREEN.right - ball_width < ball_x): ball_dx *= -1 #画面の上端か下端に移動したら、y座標の移動方向を変える if (ball_y < SCREEN.top) or (SCREEN.bottom - ball_height < ball_y): ball_dy *= -1 #ballを移動させる ball_x += ball_dx ball_y += ball_dy pygame.display.update() clock.tick(FPS) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if __name__ == '__main__': main()
Pygame入門 図形(四角)を動かす
import pygame import sys SCREEN_SIZE = (400, 400) WHITE = (255, 255, 255) RED = (255, 0, 0) FPS = 1 def main(): pygame.init() clock = pygame.time.Clock() screen = pygame.display.set_mode(SCREEN_SIZE) ball = pygame.Rect(100, 100, 10, 10) while True: screen.fill(WHITE) pygame.draw.rect(screen, RED, ball) ball.move_ip(10, 0) pygame.display.update() clock.tick(FPS) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if __name__ == '__main__': main()
Pygame入門 マウスポインターの座標を取得する
マウスポインターの座標を取得して、画面に数値で表示する。
import pygame from pygame.locals import * import sys SCREEN_SIZE = (400, 400) def main(): pygame.init() screen = pygame.display.set_mode(SCREEN_SIZE) # 画面の大きさを設定する pygame.display.set_caption('mouse') # 画面のタイトルを設定する font = pygame.font.Font(None, 60) while True: pygame.display.update() mouseX, mouseY = pygame.mouse.get_pos() text = font.render(f'{mouseX}, {mouseY}', True, (255, 0, 0)) screen.fill((255, 255, 255)) screen.blit(text, [0, 0]) for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if __name__ == '__main__': main()
Pygame入門 図形(四角)を行列に並べて表示する
import pygame from pygame.locals import * # 定数QUITを使うため。importしない場合は、pygame.QUITとする。 import sys SCREEN_WIDTH = 400 SCREEN_HEIGHT = 300 SCREEN_SIZE = (SCREEN_WIDTH, SCREEN_HEIGHT) ROW = 3 # 表示する四角の行数 COLUMN = 5 # 表示する四角の列数 MARGIN = 10 # 表示する四角の間隔 RECT_WIDTH = (SCREEN_WIDTH - (MARGIN * (COLUMN + 1))) / COLUMN # 表示する四角の幅 RECT_HEIGHT = 20 # 表示する四角の高さ def main(): pygame.init() screen = pygame.display.set_mode(SCREEN_SIZE) # 画面の大きさを設定する pygame.display.set_caption('figure') # 画面のタイトルを設定する while True: screen.fill((255, 255, 255)) # 画面を白く塗りつぶす # 赤色の四角を行列に並べて描く for r in range(ROW): for c in range(COLUMN): x = MARGIN * (c + 1) + RECT_WIDTH * c y = MARGIN * (r + 1) + RECT_HEIGHT * r pygame.draw.rect(screen, (255, 0, 0), Rect(x, y, RECT_WIDTH, RECT_HEIGHT)) pygame.display.update() for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if __name__ == '__main__': main()
Pygame入門 図形(四角)を表示する
import pygame from pygame.locals import * # 定数QUITを使うため。importしない場合は、pygame.QUITとする。 import sys SCREEN_SIZE = (400, 300) def main(): pygame.init() screen = pygame.display.set_mode(SCREEN_SIZE) # 画面の大きさを設定する pygame.display.set_caption('figure') # 画面のタイトルを設定する while True: screen.fill((255, 255, 255)) # 画面を白く塗りつぶす # 赤色の四角を描く 左上の座標が(10, 10)、長さと高さが(50, 20) pygame.draw.rect(screen, (255, 0, 0), Rect(10, 10, 50, 20)) pygame.display.update() for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if __name__ == '__main__': main()