我是靠谱客的博主 背后黄豆,最近开发中收集的这篇文章主要介绍python练习---大球吃小球游戏,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

要求:
鼠标点击屏幕会自动产生不同大小的小球,小球会自动移动,碰到屏幕边界反弹回来,当不同大小的小球相遇在一起发生碰撞,大的小球会吃掉较小的小球,变得更大
代码:

import pygame
import random
import math

def random_color():
    return random.randint(0,255),random.randint(0,255),random.randint(0,255)
if __name__=='__main__':
    pygame.init()
    screen = pygame.display.set_mode((600,400))
    screen.fill((255,255,255))
    pygame.display.set_caption('大球吃小球')
    pygame.display.flip()
    #all_ball中保存多少个球
    #每个球要保存:半径,圆心坐标,颜色,x方向的速度,y方向的速度
    all_balls=[
        {
            'r':random.randint(10,15),
            'pos':(100,100),
            'color':(random_color()),
            'x_speed':random.randint(0,1),
            'y_speed': random.randint(0, 1),
            'live':True
        }
    ]
    #这里用到了python里面的字典!
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()

            if event.type == pygame.MOUSEBUTTONDOWN:
                #点击一下鼠标创建一个球
                ball = {
                    'r': random.randint(10,15),
                    'pos': event.pos,
                    'color': (random.randint(0,255),random.randint(0,255),random.randint(0,255)),
                    'x_speed': random.randint(0,1),
                    'y_speed': random.randint(0,1),
                    'live': True
                }
                #保存球
                all_balls.append(ball)
            #刷新界面
        screen.fill((255,255, 255))
        for ball in all_balls:
            # 取出球原来的x和y以及速度
            x,y = ball['pos']
            x_speed = ball['x_speed']
            y_speed = ball['y_speed']

            if x + ball['r'] >= 600:
                x_speed *= -1
            if x - ball['r'] <= 0:
                x_speed *= -1
            if y + ball['r'] >= 400:
                y_speed *= -1
            if y - ball['r'] <= 0:
                y_speed *= -1
            x += x_speed
            y += y_speed
            pygame.draw.circle(screen, ball['color'], (x,y), ball['r'])
            # 更新球的坐标
            ball['pos'] = x,y
            ball['x_speed'] = x_speed
            ball['y_speed']=y_speed

            for ball1 in all_balls:
                    if all_balls.index(ball) == all_balls.index(ball1):
                        pass
                    else:
                        other_x, other_y=ball1['pos']
                        dx = x - other_x
                        dy = y - other_y
                        distance = math.sqrt(dx**2+dy**2) #距离
                        if distance < ball['r']+ball1['r']:
                            if ball['r'] > ball1['r']:
                                ball['r']=int(ball['r']+ball1['r']/5)
                                all_balls.remove(ball1)

        pygame.display.update()
        #这里是定义了大球吃小球

运行效果:
在这里插入图片描述
在这里插入图片描述
也可以鼠标点击产生很多小球:
在这里插入图片描述
是不是很神奇快来尝试一下!

最后

以上就是背后黄豆为你收集整理的python练习---大球吃小球游戏的全部内容,希望文章能够帮你解决python练习---大球吃小球游戏所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部