本文实例为大家分享了python pygame球球大作战的具体代码,供大家参考,具体内容如下
球球大作战:(大球吃小球,代码如下:)
from random import randint,randrange import pygame from math import sqrt,pi class Ball(object): def __init__(self, center, color, radius, sx, sy): self._center = center self._color = color self._radius = radius self._sx = sx self._sy = sy @property def center(self): return self._center @property def radius(self): return self._radius @radius.setter def radius(self,radius): self._radius = radius def move(self): x, y = self._center[0], self._center[1] x += self._sx y += self._sy self._center = (x, y) # if x + self._radius > 800: # self._sx = -abs(self._sx) # elif x + self._radius < 0: # self._sx = abs(self._sx) # elif y +self._radius > 800: # self._sy = -abs(self._sy) # elif y +self._radius < 0: # self._sy = abs(self._sy) if x + self._radius >= 800 or x - self._radius <= 0 or x <= 0: self._sx = -self._sx if y +self._radius >= 800 or y - self._radius <= 0 or y <= 0: self._sy = -self._sy def draw(self,screen): pygame.draw.circle(screen, self._color, self._center, self._radius, 0) def eat(self, other): a = sqrt((self._center[0] - other.center[0]) ** 2 + (self._center[1] - other.center[1]) ** 2) if a < self._radius + other.radius and self._radius < other.radius: other.radius = self._radius + other.radius self.radius = 0 elif a < self._radius + other.radius and self._radius > other.radius: self._radius = self._radius + other.radius other.radius = 0 def main(): balls = [] pygame.init() screen = pygame.display.set_mode([800,800]) pygame.display.set_caption('大球吃小球') c = pygame.time.Clock() running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1: color = random_color() radius = randint(10,100) sx, sy = randint(-10,10), randint(-10,10) ball = Ball(event.pos, color, radius, sx, sy) balls.append(ball) refresh(screen,balls) c.tick(20) # 50帧 for ball in balls: ball.move() balls_len = len(balls) for i in range(balls_len): for x in range(balls_len): balls[i].eat(balls[x]) for ball in balls: if ball.radius == 0: balls.remove(ball) pygame.quit() def refresh(screen,balls): bg_color = [255, 255, 255] screen.fill(bg_color) for ball in balls: ball.draw(screen) pygame.display.flip() def random_color(): return [randint(1,255), randint(1,255), randint(1,255)] if __name__ == '__main__': main()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年11月20日
2024年11月20日
- 柏菲·珞叔作品集《金色大厅2》限量开盘母带ORMCD[低速原抓WAV+CUE]
- Gareth.T《sad songs(Explicit)》[320K/MP3][29.03MB]
- Gareth.T《sad songs(Explicit)》[FLAC/分轨][152.85MB]
- 证声音乐图书馆《海风摇曳·盛夏爵士曲》[320K/MP3][63.06MB]
- 龚玥《金装龚玥HQCD》头版限量[WAV分轨]
- 李小春《吻别》萨克斯演奏经典[原抓WAV+CUE]
- 齐秦《辉煌30年24K珍藏版》2CD[WAV+CUE]
- 证声音乐图书馆《海风摇曳·盛夏爵士曲》[FLAC/分轨][321.47MB]
- 群星 《世界经典汽车音乐》 [WAV分轨][1G]
- 冷漠.2011 《冷漠的爱DSD》[WAV+CUE][1.2G]
- 陈明《流金岁月精逊【中唱】【WAV+CUE】
- 群星《Jazz-Ladies1-2爵士女伶1-2》HQCD/2CD[原抓WAV+CUE]
- 群星《美女私房歌》(黑胶)[WAV分轨]
- 郑源.2009《试音天碟》24BIT-96KHZ[WAV+CUE][1.2G]
- 飞利浦试音碟 《环球群星监听录》SACD香港版[WAV+CUE][1.1G]