python 小鳥過小球

2021-10-05 18:54:00 字數 1905 閱讀 1001

目標效果:

黃色為小鳥,空格鍵控制向上飛,若小鳥碰到小球或者跑出畫面遊戲結束

**:

##############引用資料庫與函式##############

from turtle import *

from random import randrange

##############定義變數##############

bird=[-100,80]

ball=[[240,0]]

bird_size=30 #鳥的大小

ball_size=50 #球的大小

##############定義函式##############

def change():

bird[1]=bird[1]+bird_size

def distance(a,b,x,y):

return ((a-x)**2+(b-y)**2)**0.5 #返回兩個座標的直線距離

def hit():

for i in range(len(ball)):

if distance(ball[i][0],ball[i][1],bird[0],bird[1])

return true #撞到小球

return false

def inside():

if bird[1]300-bird_size/2: #如果小鳥的位置超出了上下邊界

return false

else:

return true #還在畫布上

def draw():

clear() #清空畫布

for i in range(len(ball)): #遍歷小球佇列

up() #舉起小烏龜

goto(ball[i][0],ball[i][1]) #去到第i個小球的座標位置

dot(ball_size,"black")

ball[i][0]=ball[i][0]-3 #小球x座標減1,模擬向左移

up() # 舉起小烏龜

goto(bird[0], bird[1]) # 去到小鳥的位置

dot(bird_size, "yellow")

bird[1] = bird[1] - 5 #小鳥自動往下墜落,即y座標一直遞減

update()

def gameloop():

global bird,ball

if randrange(30)==1: #1/30的概率生成小球

x=240 #小球座標

y=randrange(-300,300)

if len(ball)!=0: #如果小球長度不為0

if ball[0][0]

ball.pop(0) # 去掉第乙個小球

draw() #將小球畫出來

if (not inside()) or hit(): #小鳥撞到小球或者跑出畫布

return

ontimer(gameloop,30) #30毫秒一迴圈

##############主程式##############

setup(420,420,0,0) #畫布大小為420*420,一開始座標為(0,0)

hideturtle() #隱藏小烏龜

tracer(false) #隱藏繪製過程

listen() #新增監聽

onkey(lambda:change()," ") #如果按了空格,執行change函式

gameloop()

done() #結束函式,畫布停留

python實現彈跳小球

前言 學習python的過程中,比較喜歡通過實際的小專案進行鞏固學習,決定寫乙個彈跳小球的程式。這個實戰例程是在 上看到的,他的編寫過程比較完整,步驟清晰,貼的 並不完整,但是我還是決定嘗試一下,在嘗試的過程中由於自己的基礎知識並沒有學到類這裡,所以是在摸索的階段,一邊學習基礎知識,一邊編寫這個例程...

ccf小球碰撞Python實現

輸入的第一行包含三個整數n,l,t,用空格分隔,分別表示小球的個數 線段長度和你需要計算t秒之後小球的位置。第二行包含n個整數a1,a2,an,用空格分隔,表示初始時刻n個小球的位置。輸出一行包含n個整數,用空格分隔,第i個整數代表初始時刻位於ai的小球,在t秒之後的位置。樣例輸入 3 10 5 4...

ccf碰撞的小球python

輸入格式 輸入的第一行包含三個整數n,l,t,用空格分隔,分別表示小球的個數 線段長度和你需要計算t秒之後小球的位置。第二行包含n個整數a1,a2,an,用空格分隔,表示初始時刻n個小球的位置。輸出格式 輸出一行包含n個整數,用空格分隔,第i個整數代表初始時刻位於ai的小球,在t秒之後的位置。樣例輸...