Python Pygame實(shí)戰(zhàn)之趣味籃球游戲的實(shí)現(xiàn)
導(dǎo)語(yǔ)
貪玩的我~終于回來(lái)了!
今日過(guò)后,日常更新——挺長(zhǎng)一段時(shí)間都不在狀態(tài)的。好好調(diào)整中!
最近在給大家研究一些新游戲,大家喜歡打籃球嘛?
(木子高中還參加過(guò)籃球比賽,棒棒~(yú)雖然打的不咋滴就是了~哈哈哈)
大學(xué)時(shí)期,最喜歡跟著室友一起去看學(xué)校的各種籃球比賽的。哈哈哈,有姐妹的話(huà)就懂得~
估計(jì)學(xué)編程的女孩子還是挺少的哈,男孩子的話(huà)不懂我就不解釋啦~回家了可以問(wèn)下自己的女朋友是不是也這樣子干過(guò)!嘻嘻.jpg
今天小編的話(huà)就給大家用代碼做一款簡(jiǎn)約的《籃球小游戲》
一、環(huán)境安裝
1)各種素材(圖片、代碼)

資料挺多滴,等下代碼就只展示主要的一些代碼哈!
2)運(yùn)行環(huán)境
小編使用的環(huán)境:Python3、Pycharm社區(qū)版、Pygame、numpy、 scipy 模塊部分自帶就不
展示啦。
模塊安裝:pip install -i https://pypi.douban.com/simple/+模塊名
二、代碼展示
1)游戲界面文字
設(shè)置的是雙人模式撒,可以?xún)蓚€(gè)人一起玩兒的,玩家1跟玩家2輪流投籃滴。
import pygame
BLACK = (0, 0, 0)
RED = (255, 0, 0)
class Text:
def text_objects(self, text, font, color):
textSurface = font.render(text, True, color)
return textSurface, textSurface.get_rect()
def score_display(self, world, screen):
p1color = RED if world.p1turn else BLACK
p2color = BLACK if world.p1turn else RED
self.add_to_screen(
screen, 30, "Player 1: " + str(world.p1score) + " points", 150, 50, p1color
)
self.add_to_screen(
screen, 30, "Player 2: " + str(world.p2score) + " points", 150, 90, p2color
)
def victory_message(self, world, screen):
winner = 1 if world.p1score > world.p2score else 2
self.add_to_screen(
screen, 100, "The winner is Player " + str(winner) + "!", 640, 320
)
def add_to_screen(self, screen, font_size, text, center_x, center_y, color):
largeText = pygame.font.Font("freesansbold.ttf", font_size)
TextSurf, TextRect = self.text_objects(text, largeText, color)
TextRect.center = (center_x, center_y)
screen.blit(TextSurf, TextRect)2)主程序
import pygame
from Ball import Ball2D
from World import World
from PowerBar import PowerBar
from Text import Text
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
def main():
# initializing pygame
pygame.init()
clock = pygame.time.Clock()
# top left corner is (0,0)
win_width = 1280
win_height = 640
screen = pygame.display.set_mode((win_width, win_height))
pygame.display.set_caption("Basketball籃球游戲")
world = World()
power = PowerBar()
scoreboard = Text()
world.add_rim("disk-red.png", 5).set_pos([1000, 300])
world.add_rim("disk-red.png", 5).set_pos([1075, 300])
dt = 0.1
while True:
# 100 fps
clock.tick(60)
# Clear the background, and draw the sprites
screen.fill(WHITE)
power.draw(screen)
world.draw(screen)
pygame.draw.arc(screen, RED, (50, 50, 50, 50), 1, 1, 10)
# draw rim line
pygame.draw.line(screen, RED, [1000, 340], [1075, 340], 10)
# draw backboard
pygame.draw.line(screen, RED, [1075, 250], [1075, 640], 10)
scoreboard.score_display(world, screen)
if world.won:
scoreboard.victory_message(world, screen)
pygame.display.update()
clock.tick(1)
# countdown timer to close the game when won
for i in range(100):
pass
break
elif not world.shot:
power.start(world)
else:
won = world.update(dt, power)
pygame.display.update()
if __name__ == "__main__":
main()三、效果展示
1)游戲玩家一

2)游戲玩家二

3)隨機(jī)投籃
用多大的力氣投籃就在蓄力的時(shí)候點(diǎn)一下鼠標(biāo)左鍵在相應(yīng)的藍(lán)條點(diǎn)擊,剛開(kāi)始肯定不適應(yīng)
要慢慢試,看那里是最適合的時(shí)候。每次投籃一次10分哦~

到此這篇關(guān)于Python Pygame實(shí)戰(zhàn)之趣味籃球游戲的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python Pygame籃球游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)半自動(dòng)化發(fā)送微信信息
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)半自動(dòng)化發(fā)送微信信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
python 定時(shí)修改數(shù)據(jù)庫(kù)的示例代碼
這篇文章主要介紹了python 定時(shí)修改數(shù)據(jù)庫(kù)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
使用Python的Dataframe取兩列時(shí)間值相差一年的所有行方法
今天小編就為大家分享一篇使用Python的Dataframe取兩列時(shí)間值相差一年的所有行方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Python生成動(dòng)態(tài)路由軌跡圖的示例詳解
在當(dāng)今的數(shù)據(jù)驅(qū)動(dòng)時(shí)代,可視化技術(shù)在數(shù)據(jù)分析和決策支持中扮演著越來(lái)越重要的角色,本文將介紹如何使用Python來(lái)生成動(dòng)態(tài)的路由軌跡圖,需要的可以了解下2025-02-02
python使用redis模塊來(lái)跟redis實(shí)現(xiàn)交互
這篇文章主要介紹了python使用redis模塊來(lái)跟redis實(shí)現(xiàn)交互,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06
Python中內(nèi)置函數(shù)filter函數(shù)用法詳解
filter()函數(shù)是Python內(nèi)置的另一個(gè)有用的高階函數(shù),filter()函數(shù)接收一個(gè)函數(shù)f和一個(gè)序列,函數(shù)f的作用是對(duì)每個(gè)元素進(jìn)行判斷,返回True或False,下面這篇文章主要給大家介紹了關(guān)于Python中內(nèi)置函數(shù)filter函數(shù)用法的相關(guān)資料,需要的朋友可以參考下2024-05-05
Python爬蟲(chóng)必備之XPath解析庫(kù)
今天給大家?guī)?lái)的是Python爬蟲(chóng)的相關(guān)知識(shí),文章圍繞著XPath解析庫(kù)展開(kāi),文中有非常詳細(xì)的代碼示例及介紹,需要的朋友可以參考下2021-06-06
NumPy中np.random.rand函數(shù)的實(shí)現(xiàn)
np.random.rand是NumPy庫(kù)中的一個(gè)函數(shù),用于生成隨機(jī)數(shù),本文主要介紹了NumPy中np.random.rand函數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
Python實(shí)現(xiàn)二分查找與bisect模塊詳解
二分查找又叫折半查找,二分查找應(yīng)該屬于減治技術(shù)的成功應(yīng)用。python標(biāo)準(zhǔn)庫(kù)中還有一個(gè)灰常給力的模塊,那就是bisect。這個(gè)庫(kù)接受有序的序列,內(nèi)部實(shí)現(xiàn)就是二分。下面這篇文章就詳細(xì)介紹了Python如何實(shí)現(xiàn)二分查找與bisect模塊,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01

