開発環境
- 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 コメント:
コメントを投稿