12-作業(yè)(多個(gè)球運(yùn)動(dòng))

練習(xí):鼠標(biāo)點(diǎn)擊產(chǎn)生球,球碰到邊界會(huì)彈回,大球碰到小球會(huì)吃掉 ,屏幕上超過(guò)10個(gè)球會(huì)結(jié)束游戲


# !/usr/bin/env/python
# .*. encoding:utf-8 -*-

import pygame
import random
from math import fabs,pi
import time




if __name__ == '__main__':
    pygame.init()
    screen = pygame.display.set_mode((800,600))
    screen.fill((255,255,255))
    pygame.display.flip()

    #all_balls中保存多個(gè)球
    #每個(gè)球要保存: 半徑,圓心坐標(biāo),顏色,x速度,y速度
    all_ball = [
        {'r':random.randint(10,20),
         'pos':(100,200),
         'color':(random.randint(0,255),random.randint(0,255),random.randint(0,255)),
         'x_speed':random.randrange(-3,3,2),
         'y_speed': random.randrange(-3,3,2),
         },
        {
            'r': random.randint(10, 20),
            'pos': (300, 300),
            'color': (random.randint(0,255),random.randint(0,255),random.randint(0,255)),
            'x_speed': random.randrange(-3,3,2),
            'y_speed': random.randrange(-3,3,2),
        }
    ]


    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()
            if event.type == pygame.MOUSEBUTTONDOWN:
                ball ={
            'r': random.randint(10, 20),
            'pos': event.pos,
            'color': (random.randint(0,255),random.randint(0,255),random.randint(0,255)),
            'x_speed': random.randrange(-5,5,2),
            'y_speed': random.randrange(-5,5,2),
                }

                all_ball.append(ball)


        #刷新界面
        screen.fill((255,255,255))
        for ball_dict in all_ball:
            #取出原來(lái)的x坐標(biāo)和y坐標(biāo)以及他們的速度
            x ,y  = ball_dict['pos']
            x_speed = ball_dict['x_speed']
            y_speed =ball_dict['y_speed']
            x += x_speed
            y += y_speed
            pygame.draw.circle(screen,ball_dict['color'],(x,y),ball_dict['r']
                               )

            #重新更新球?qū)?yīng)的坐標(biāo)

            ball_dict['pos'] = x,y
            x, y = ball_dict['pos']
            if x+20 >= 800:
                x = 1000 - 20
                ball_dict['x_speed'] *= -1
            if x-20  <= 0:
                ball_dict['x_speed'] *= -1
            if y+20  >= 600:
                y = 800 - 20
                ball_dict['y_speed'] *= -1
            if y-20  <= 0:
                ball_dict['y_speed'] *= -1

        for No_1 in all_ball:
            for No_2 in all_ball:
                if not(No_1 ==No_2):
                    x1,y1 =No_1['pos']
                    x2,y2 =No_2['pos']
                    r1 =No_1['r']
                    r2 = No_2['r']
                    if fabs(x1-x2)<= r1+r2 and fabs(y1-y2)<=r1+r2:
                        if No_1['r']>No_2['r']:
                            No_1['r'] += int(r2/3)
                            all_ball.remove(No_2)
        sum_r =0
        for one_ball in all_ball:
            r = one_ball['r']
            s =pi*r*r
            sum_r += s

        font = pygame.font.Font('../aa.ttf', 40)
        title = font.render('剩余數(shù)量:%d' % len(all_ball), True, (0, 0, 0))
        title1 = font.render('圓的總面積:%.2f'%sum_r, True, (0, 0, 0))

        screen.blit(title, (20, 20))
        screen.blit(title1, (20, 60))
        if len(all_ball)>10:
            screen.fill((255,255,255))
            title3 = font.render('球的數(shù)量太多游戲結(jié)束', True, (0, 0, 0))
            screen.blit(title3, (100, 100))
            time.sleep(2)

        pygame.display.update()
1.png
2.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、生存模式就像職場(chǎng)環(huán)境,攻與防是常態(tài)。 一個(gè)10毫克的小球,想要生存下去并逐漸壯大,不僅要會(huì)攻擊其他球,還要會(huì)保...
    忍者神貓閱讀 791評(píng)論 6 2
  • 因?yàn)橐鲆粋€(gè)地圖操作的項(xiàng)目,需要用到這個(gè)地圖庫(kù),但是查詢(xún)官方API麻煩,而且這個(gè)地圖框架的API做的用起來(lái)確實(shí)太麻...
    虛幻的銹色閱讀 34,266評(píng)論 1 15
  • 青春就像一本難懂的書(shū) 每個(gè)人都在努力詮釋著幸福 時(shí)間一天天一年年,寫(xiě)下生命的目錄 翻來(lái)回憶的那頁(yè)才覺(jué)得滿(mǎn)足 故事在...
    育萍閱讀 676評(píng)論 1 0
  • 離家萬(wàn)里 告別新婚的妻子和白發(fā)蒼蒼的父母 來(lái)到這帝國(guó)的墳場(chǎng) 百余年來(lái) 在這個(gè)遭受了 無(wú)數(shù)戰(zhàn)亂 貧窮 疾病 和饑餓的...
    一葉茶閱讀 125評(píng)論 0 2
  • 時(shí)間管理的本質(zhì)其實(shí)是時(shí)間、金錢(qián)和注意力三者重要性的排序,有人認(rèn)為時(shí)間最重要,有人認(rèn)為金錢(qián)才是王道,其實(shí)注意力才是最...
    劉紹迪日知錄閱讀 433評(píng)論 0 0

友情鏈接更多精彩內(nèi)容