您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
今天就跟大家聊聊有关怎么在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()
看完上述内容,你们对怎么在python中使用pygame实现一个球球大作战游戏有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。