開発環境
- macOS High Sierra - Apple
- Emacs (Text Editor)
- Python 3.6 (プログラミング言語)
Teach Your Kids to Code: A Parent-Friendly Guide to Python Programming (Bryson Payne(著)、No Starch Press)のChapter 9.(User Interaction: Get into the Game)、PROGRAMMING CHALLENGES、#3: THROWING SMILEYSを取り組んでみる。
#3: THROWING SMILEYS
コード(Emacs)
Python 3
#!/usr/bin/env python3
import pygame
import random
black = (0, 0, 0)
unit = 60
width = unit * 16
height = unit * 9
pygame.init()
screen = pygame.display.set_mode([width, height])
pygame.display.set_caption('Smiley Explosion')
keep_going = True
mousedown = False
clock = pygame.time.Clock()
pic = pygame.image.load('CrazySmile.bmp')
colorkey = pic.get_at((0, 0))
pic.set_colorkey(colorkey)
sprite_list = pygame.sprite.Group()
class Smiley(pygame.sprite.Sprite):
def __init__(self, pos, xvel, yvel):
pygame.sprite.Sprite.__init__(self)
self.image = pic
self.scale = random.randrange(10, 100)
self.image = pygame.transform.scale(
self.image, (self.scale, self.scale))
self.rect = self.image.get_rect()
self.pos = pos
self.rect.x = pos[0] - self.scale / 2
self.rect.y = pos[1] - self.scale / 2
self.xvel = xvel
self.yvel = yvel
def update(self):
self.rect.x += self.xvel
self.rect.y += self.yvel
if self.rect.x <= 0 or self.rect.x > screen.get_width() - self.scale:
self.xvel = -self.xvel * 0.8
if self.rect.y <= 0 or self.rect.y > screen.get_height() - self.scale:
self.yvel = -self.yvel * 0.8
while keep_going:
pygame.mouse.get_rel()
for event in pygame.event.get():
if event.type == pygame.QUIT:
keep_going = False
if event.type == pygame.MOUSEBUTTONDOWN:
mousedown = True
if event.type == pygame.MOUSEBUTTONUP:
mousedown = False
screen.fill(black)
sprite_list.update()
sprite_list.draw(screen)
clock.tick(60)
pygame.display.update()
if mousedown:
speed = pygame.mouse.get_rel()
speedx = speed[0]
speedy = speed[1]
if speedx == 0 and speedy == 0:
speedx = random.randrange(-5, 6)
speedy = random.randrange(-5, 6)
smiley = Smiley(pygame.mouse.get_pos(), speedx, speedy)
sprite_list.add(smiley)
pygame.quit()
入出力結果(Terminal, Jupyter(IPython))
$ ./sample3.py $
0 コメント:
コメントを投稿