欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Pygame實(shí)現(xiàn)兔子獵人守護(hù)城堡游戲

 更新時(shí)間:2021年12月09日 10:21:00   作者:九叔敲代碼  
這篇文章主要介紹了用python來(lái)制作的一個(gè)守護(hù)類小游戲兔子獵人守護(hù)城堡,文中的示例代碼介紹得很詳細(xì),感興趣的小伙伴快來(lái)跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧

效果圖

守衛(wèi)類游戲大家應(yīng)該玩過(guò)吧,什么植物大戰(zhàn)僵尸呀,保衛(wèi)蘿卜呀,今天我們自己用python來(lái)寫一個(gè)自己的守護(hù)類小游戲兔子獵人守護(hù)城堡,讓大家看看效果圖。

主要代碼

下面我來(lái)說(shuō)一下是怎么得到的將代碼分享一下給大家

首先得將要用到的庫(kù)導(dǎo)入進(jìn)來(lái)

import cfg
import math
import random
import pygame
from modules.Sprites import *
from modules.interfaces import *

游戲初始化

?初始化pygame, 設(shè)置展示窗口

pygame.init()
	pygame.mixer.init()
	screen = pygame.display.set_mode(cfg.SCREENSIZE)
	pygame.display.set_caption(' QQ群號(hào): 932574150')

加載必要的游戲素材

game_images = {}
	for key, value in cfg.IMAGE_PATHS.items():
		game_images[key] = pygame.image.load(value)
	game_sounds = {}
	for key, value in cfg.SOUNDS_PATHS.items():
		if key != 'moonlight':
			game_sounds[key] = pygame.mixer.Sound(value)
	return screen, game_images, game_sounds

主函數(shù)

初始化

screen, game_images, game_sounds = initGame()

播放背景音樂(lè)

pygame.mixer.music.load(cfg.SOUNDS_PATHS['moonlight'])
	pygame.mixer.music.play(-1, 0.0)

加載字體

font = pygame.font.Font(None, 24)

定義兔子

bunny = BunnySprite(image=game_images.get('rabbit'), position=(100, 100))

跟蹤玩家的精度變量, 記錄了射出的箭頭數(shù)和被擊中的獾的數(shù)量.

acc_record = [0., 0.]

生命值

healthvalue = 194

弓箭

arrow_sprites_group = pygame.sprite.Group()

badguy_sprites_group = pygame.sprite.Group()
	badguy = BadguySprite(game_images.get('badguy'), position=(640, 100))
	badguy_sprites_group.add(badguy)

定義了一個(gè)定時(shí)器, 使得游戲里經(jīng)過(guò)一段時(shí)間后就新建一支獾

badtimer = 100
	badtimer1 = 0

游戲主循環(huán), running變量會(huì)跟蹤游戲是否結(jié)束, exitcode變量會(huì)跟蹤玩家是否勝利.

running, exitcode = True, False
	clock = pygame.time.Clock()
	while running:

在給屏幕畫任何東西之前用黑色進(jìn)行填充

screen.fill(0)

添加的風(fēng)景也需要畫在屏幕上

		for x in range(cfg.SCREENSIZE[0]//game_images['grass'].get_width()+1):
			for y in range(cfg.SCREENSIZE[1]//game_images['grass'].get_height()+1):
				screen.blit(game_images['grass'], (x*100, y*100))
		for i in range(4): screen.blit(game_images['castle'], (0, 30+105*i))

倒計(jì)時(shí)信息

countdown_text = font.render(str((90000-pygame.time.get_ticks())//60000)+":"+str((90000-pygame.time.get_ticks())//1000%60).zfill(2), True, (0, 0, 0))
		countdown_rect = countdown_text.get_rect()
		countdown_rect.topright = [635, 5]
		screen.blit(countdown_text, countdown_rect)

按鍵檢測(cè),退出與射擊

		for event in pygame.event.get():
			if event.type == pygame.QUIT:
				pygame.quit()
				sys.exit()
			elif event.type == pygame.MOUSEBUTTONDOWN:
				game_sounds['shoot'].play()
				acc_record[1] += 1
				mouse_pos = pygame.mouse.get_pos()
				angle = math.atan2(mouse_pos[1]-(bunny.rotated_position[1]+32), mouse_pos[0]-(bunny.rotated_position[0]+26))
				arrow = ArrowSprite(game_images.get('arrow'), (angle, bunny.rotated_position[0]+32, bunny.rotated_position[1]+26))
				arrow_sprites_group.add(arrow)

移動(dòng)兔子

key_pressed = pygame.key.get_pressed()
		if key_pressed[pygame.K_w]:
			bunny.move(cfg.SCREENSIZE, 'up')
		elif key_pressed[pygame.K_s]:
			bunny.move(cfg.SCREENSIZE, 'down')
		elif key_pressed[pygame.K_a]:
			bunny.move(cfg.SCREENSIZE, 'left')
		elif key_pressed[pygame.K_d]:
			bunny.move(cfg.SCREENSIZE, 'right')

更新弓箭

		for arrow in arrow_sprites_group:
			if arrow.update(cfg.SCREENSIZE):
				arrow_sprites_group.remove(arrow)

更新獾

		if badtimer == 0:
			badguy = BadguySprite(game_images.get('badguy'), position=(640, random.randint(50, 430)))
			badguy_sprites_group.add(badguy)
			badtimer = 100 - (badtimer1 * 2)
			badtimer1 = 20 if badtimer1>=20 else badtimer1+2
		badtimer -= 1
		for badguy in badguy_sprites_group:
			if badguy.update():
				game_sounds['hit'].play()
				healthvalue -= random.randint(4, 8)
				badguy_sprites_group.remove(badguy)

碰撞檢測(cè)

		for arrow in arrow_sprites_group:
			for badguy in badguy_sprites_group:
				if pygame.sprite.collide_mask(arrow, badguy):
					game_sounds['enemy'].play()
					arrow_sprites_group.remove(arrow)
					badguy_sprites_group.remove(badguy)
					acc_record[0] += 1

畫出弓箭

arrow_sprites_group.draw(screen)

畫出獾

badguy_sprites_group.draw(screen)

畫出兔子

bunny.draw(screen, pygame.mouse.get_pos())

畫出城堡健康值, 首先畫了一個(gè)全紅色的生命值條, 然后根據(jù)城堡的生命值往生命條里面添加綠色.

screen.blit(game_images.get('healthbar'), (5, 5))
		for i in range(healthvalue):
			screen.blit(game_images.get('health'), (i+8, 8))

判斷游戲是否結(jié)束

		if pygame.time.get_ticks() >= 90000:
			running, exitcode = False, True
		if healthvalue <= 0:
			running, exitcode = False, False

更新屏幕

pygame.display.flip()
		clock.tick(cfg.FPS)

計(jì)算一下游戲的準(zhǔn)確性

accuracy = acc_record[0] / acc_record[1] * 100 if acc_record[1] > 0 else 0
	accuracy = '%.2f' % accuracy
	showEndGameInterface(screen, exitcode, accuracy, game_images)

運(yùn)行?

if __name__ == '__main__':
	main()

上面我將代碼分散了,大家可以看一下整合一下就可以運(yùn)行了?

到此這篇關(guān)于Python Pygame實(shí)現(xiàn)兔子獵人守護(hù)城堡游戲的文章就介紹到這了,更多相關(guān)Python Pygame游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python小技巧——將變量保存在本地及讀取

    python小技巧——將變量保存在本地及讀取

    這篇文章主要介紹了python小技巧——如何將變量保存在本地及讀取,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • python移位運(yùn)算的實(shí)現(xiàn)

    python移位運(yùn)算的實(shí)現(xiàn)

    這篇文章主要介紹了python移位運(yùn)算的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • matlab繪制局部放大圖圖文教程

    matlab繪制局部放大圖圖文教程

    這篇文章主要給大家介紹了關(guān)于matlab繪制局部放大圖的相關(guān)資料,所謂局部放大即呈現(xiàn)子圖,以顯示局部細(xì)節(jié),需要的朋友可以參考下
    2023-07-07
  • Python+Dlib+Opencv實(shí)現(xiàn)人臉采集并表情判別功能的代碼

    Python+Dlib+Opencv實(shí)現(xiàn)人臉采集并表情判別功能的代碼

    這篇文章主要介紹了Python+Dlib+Opencv實(shí)現(xiàn)人臉采集并表情判別,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 編寫python程序的90條建議

    編寫python程序的90條建議

    自己寫 Python 也有四五年了,一直是用自己的“強(qiáng)迫癥”在維持自己代碼的質(zhì)量。都有去看 Google 的 Python 代碼規(guī)范,對(duì)這幾年的工作經(jīng)驗(yàn),做個(gè)簡(jiǎn)單的筆記,如果你也在學(xué) Python,準(zhǔn)備要學(xué)習(xí) Python,希望這篇文章對(duì)你有用。
    2021-04-04
  • Python讀取excel中的圖片完美解決方法

    Python讀取excel中的圖片完美解決方法

    excel中的圖片非常常見(jiàn),但是通過(guò)python讀取excel中的圖片沒(méi)有很好的解決辦法。今天小編給大家分享一種比較聰明的方法,感興趣的朋友跟隨腳本之家小編看看吧
    2018-07-07
  • Python實(shí)現(xiàn)提取PDF簡(jiǎn)歷信息并存入Excel

    Python實(shí)現(xiàn)提取PDF簡(jiǎn)歷信息并存入Excel

    作為人力資源部的小伙伴,常常需要把他人投遞的PDF簡(jiǎn)歷資料里的關(guān)鍵信息數(shù)據(jù),提取到excel表中匯總,這個(gè)時(shí)候用Python實(shí)現(xiàn)最合適, 快來(lái)學(xué)習(xí)一下如何實(shí)現(xiàn)吧
    2022-04-04
  • Python利用xmltodict模塊實(shí)現(xiàn)處理XML數(shù)據(jù)

    Python利用xmltodict模塊實(shí)現(xiàn)處理XML數(shù)據(jù)

    理解和處理XML數(shù)據(jù)在Python中是一項(xiàng)常見(jiàn)任務(wù),xmltodict便是一個(gè)Python庫(kù),用于將XML數(shù)據(jù)解析為易于處理的Python字典,下面我們就來(lái)學(xué)習(xí)一下xmltodict庫(kù)的具體使用吧
    2023-11-11
  • 如何在python中實(shí)現(xiàn)ECDSA你知道嗎

    如何在python中實(shí)現(xiàn)ECDSA你知道嗎

    這篇文章主要為大家介紹了python中實(shí)現(xiàn)ECDSA,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助,希望能夠給你帶來(lái)幫助
    2021-11-11
  • python如何讀寫json數(shù)據(jù)

    python如何讀寫json數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了python如何讀寫json數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03

最新評(píng)論