pygame实现王思聪吃热狗小游戏(双人版)
游戲介紹:
一款單人版的思聰吃熱狗游戲,你可以自己調(diào)節(jié)思聰?shù)奈恢?#xff0c;移動(dòng)時(shí)會(huì)消耗能量10,游戲中吃到熱狗分?jǐn)?shù)加 1,能量加 20,最后的目標(biāo)就是稱(chēng)霸世界咯,吃掉所有的熱狗即游戲勝利。王思聰能量消耗完畢即游戲失敗。
如何開(kāi)始:
玩家:鍵盤(pán)方向鍵↑↓←→控制王思聰?shù)囊苿?dòng)。
游戲目標(biāo):
不斷的吃掉熱狗,不斷的強(qiáng)大起來(lái)吧!
游戲素材:
? ? ? ? ? ? ? ? ? ? ? ?
游戲要求:
1. 游戲背景可以為黑色或者其他圖片(自定義即可);
2. 王思聰可以上下左右移動(dòng),熱狗只能向左移動(dòng),當(dāng)移動(dòng)到最左邊時(shí), 穿越屏幕,到達(dá)最右端,繼續(xù)向左移動(dòng)。
3. 王思聰默認(rèn)能量值(power)為 200,每移動(dòng)一次消耗能量值 10,當(dāng)吃到一個(gè)熱狗, 能量值增加 20。
4. 王思聰只有一個(gè),而熱狗的個(gè)數(shù)是隨機(jī)的(10~40 個(gè)之間)。
5. 當(dāng)熱狗被徹底消滅掉或者思聰毫無(wú)能量值時(shí),游戲結(jié)束。
?游戲進(jìn)階要求:能否實(shí)現(xiàn)一個(gè)雙人版吃熱狗游戲?
在這大千世界里,現(xiàn)在的所有物種都是通過(guò)自身群體間的相互競(jìng)爭(zhēng)進(jìn)化而生存下來(lái),物競(jìng)天擇這個(gè)詞就是這樣的由來(lái),生存環(huán)境發(fā)生了變化,要么嘗試地去改變?nèi)ミm應(yīng)它,要么就被無(wú)情地淘汰,最終陳列在博物館內(nèi)。我們的祖先經(jīng)過(guò)幾億年的演變,適應(yīng)了一個(gè)又一個(gè)的極端環(huán)境,才有了現(xiàn)在的我們,他們的堅(jiān)韌體現(xiàn)的淋漓盡致。
emmmmmm,貌似扯遠(yuǎn)了....雙人游戲很好的詮釋了物競(jìng)天擇這一點(diǎn)。
?進(jìn)階游戲要求:
我們剛開(kāi)始是兩個(gè)人物,一個(gè)玩家是你,一個(gè)玩家是王思聰,周?chē)际莾H剩無(wú)幾的熱狗食物,為了生存兩個(gè)玩家必須爭(zhēng)奪僅有的熱狗。 當(dāng)熱狗吃完時(shí),誰(shuí)的得分高,誰(shuí)就是最終的贏家。 或者其中一方玩家體力消耗僅剩 0,另外一方玩家即為贏家。?
操作要求:?
玩家 1:鍵盤(pán)方向鍵↑↓←→控制移動(dòng)。
玩家 2:鍵盤(pán) WSAD 控制控制移動(dòng)。?
編寫(xiě)代碼如下,可供參考:
import random import time import sys import pygame from pygame.locals import * from PIL import Image # 首先縮小游戲背景圖片尺寸 filename = './img/background.jpg' img = Image.open(filename) out = img.resize((800, 600) , Image.ANTIALIAS) out.save('./img/background_resize.jpg')width = 800 height = 600 pygame.init() screen = pygame.display.set_mode([width, height]) pygame.display.set_caption('王思聰吃熱狗(雙人版)') background = pygame.image.load('./img/background_resize.jpg').convert() hotdogImg = pygame.image.load('./img/hotdog.png').convert_alpha() wangImg = pygame.image.load('./img/wang.png').convert_alpha()count1 = 0 count2 = 0 font = pygame.font.SysFont("arial",40) player1_score = font.render("player1 score:%d" %(count1), True, (255, 255, 255)) player2_score = font.render("player2 score:%d" %(count2), True, (255, 255, 255))w_width = wangImg.get_width() - 5 w_height = wangImg.get_height() - 5 h_width = hotdogImg.get_width() - 5 h_height = hotdogImg.get_height() - 5 fpsClock = pygame.time.Clock()class Wang1:def __init__(self):self.power = 200self.x = random.randint(0, width-w_width)self.y = random.randint(0, height-w_height)def move(self, new_x, new_y):if new_x < 0:self.x = 0 - new_xelif new_x > width:self.x = 0else:self.x = new_xif new_y < 0:self.y = 0 - new_yelif new_y > height:self.y = 0else:self.y = new_yself.power -= 10def eat(self):self.power += 20if self.power > 200:self.power = 200class Wang2:def __init__(self):self.power = 200self.x = random.randint(0, width-w_width)self.y = random.randint(0, height-w_height)def move(self, new_x, new_y):if new_x < 0:self.x = 0 - new_xelif new_x > width:self.x = 0else:self.x = new_xif new_y < 0:self.y = 0 - new_yelif new_y > height:self.y = 0else:self.y = new_yself.power -= 10def eat(self):self.power += 20if self.power > 200:self.power = 200class Hotdog:def __init__(self):self.x = random.randint(0, width - h_width)self.y = random.randint(0, height - h_height)def move(self):new_x = self.x + random.choice([-10])if self.x < 0:self.x = widthelse:self.x = new_xwang1 = Wang1() wang2 = Wang2() pygame.display.update() hotdog = [] for item in range(random.randint(10,40)):newHotdog = Hotdog()hotdog.append(newHotdog)while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()if event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT:wang1.move(wang1.x - 10, wang1.y)if event.key == pygame.K_RIGHT:wang1.move(wang1.x + 10, wang1.y)if event.key == pygame.K_UP:wang1.move(wang1.x, wang1.y - 10)if event.key == pygame.K_DOWN:wang1.move(wang1.x, wang1.y + 10)if event.key == pygame.K_a:wang2.move(wang2.x - 10, wang2.y)if event.key == pygame.K_d:wang2.move(wang2.x + 10, wang2.y)if event.key == pygame.K_w:wang2.move(wang2.x, wang2.y - 10)if event.key == pygame.K_s:wang2.move(wang2.x, wang2.y + 10)screen.blit(background, (0, 0))screen.blit(player2_score, (580, 20))screen.blit(player1_score, (0, 20))for item in hotdog:screen.blit(hotdogImg, (item.x, item.y))item.move()screen.blit(wangImg, (wang1.x, wang1.y))screen.blit(wangImg, (wang2.x, wang2.y))if wang1.power < 0:print("Player2 Win!")pygame.display.update()time.sleep(1)sys.exit(0)if wang2.power < 0:print("Player1 Win!")pygame.display.update()time.sleep(1)sys.exit(0)elif len(hotdog) == 0:if player1_score > player2_score:print("Player1 Win!")else:print("Player2 Win!")pygame.display.update()sys.exit(0)for item in hotdog:if ((wang1.x < item.x + w_width) and (wang1.x + w_width > item.x)and (wang1.y < item.y + h_height) and (w_height + wang1.y > item.y)) :hotdog.remove(item)count1 = count1 + 1player1_score = font.render("player1 score:%d" % count1, True, (255, 0, 0))for item in hotdog:if ((wang2.x < item.x + w_width) and (wang2.x + w_width > item.x)and (wang2.y < item.y + h_height) and (w_height + wang2.y > item.y)) :hotdog.remove(item)count2 = count2 + 1player2_score = font.render("player2 score:%d" % count2, True, (255, 0, 0))pygame.display.update()fpsClock.tick(10)?運(yùn)行之后,游戲的要求都可以實(shí)現(xiàn),在這里放一張游戲操作界面的截圖:
總結(jié)
以上是生活随笔為你收集整理的pygame实现王思聪吃热狗小游戏(双人版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: “互联网+”大学生创新创业大赛项目策划书
- 下一篇: vi编辑文件时如何批量替换字符串