日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python热狗大战

發布時間:2023/12/14 python 77 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python热狗大战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

**熱狗大戰 **
最近看了王思聰吃熱狗的圖,感覺很有趣,所以就做了一個小游戲,來給大家分享一下!
先讓大家看一下效果

游戲界面

結束界面
怎么樣?不錯吧?
今天就來做一下這個游戲

1.基礎部分


1.1導入模塊


這個游戲中有4個模塊,分別是pygame,os,random,time,sys。
導入都可以用pip方法。

#windows + R 輸入cmd按下回車 pip install pygame pip installos pip installrandom …………(其它自己打吧^_^)

1.2游戲窗口及圖片加載

#初始化pygame環境 pygame.init () #創建一個長寬分別為1300/700窗口 os.environ[ 'SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (100, 25) canvas = pygame.display.set_mode((1000,625)) canvas.fill((255,255,255))#設置窗口標題 pygame.display.set_caption("熱狗大戰")#加載圖片 bg = pygame.image.load("images/bg.jpg") h = pygame.image.load("images/hotdog.png") player = pygame.image.load("images/hero.png") end=pygame.image.load("images/end.jpg") bullet_tip=pygame.image.load("images/bullet_tip.png") time_tip=pygame.image.load("images/time_tip.png")

1.3鍵盤反應

其實這個是挺重要的,沒鍵盤基本 啥都做不成。
看代碼:

def handleEvent(): for event in pygame.event.get():if event.type == QUIT :pygame.quit() sys.exit()if states == 'RUNNING':if event.type == KEYDOWN and event.key == K_LEFT:hero.left()if event.type == KEYDOWN and event.key == K_RIGHT:hero.right()

2.運行部分


2.1類的使用

#英雄類 class Hero():def __init__(self,x,y,img):self.width=80self.height=133self.x=xself.y=yself.img=imgself.score=0def paint(self):canvas.blit(self.img,(self.x,self.y))def hit(self,c): #代表熱狗return c.x > self.x - c.width and \c.x < self.x + self.width and \c.y > self.y - c.height and \c.y < self.y + self.heightdef left(self):self.x = self.x - 50def right(self):self.x = self.x + 50def outOfBounds(self):if self.x < 0:self.x = self.x + 50if self.x > 1000 - self.width:self.x = self.x - 50#熱狗 類 class Hotdog():def __init__(self,x,y,img):self.width=30self.height=55self.x=random.randint(0,(1000-self.width))self.y=-self.heightself.img=imgdef paint(self):canvas.blit(self.img,(self.x,self.y))def step(self):self.y=self.y+10

2.2后臺工具

主要是用于加載繪制!

def isActionTime(lastTime,interval):if lastTime==0:return TruecurrentTime=time.time()return currentTime-lastTime>=intervaldef conEnter():global lastTimeif isActionTime(lastTime,interval):lastTime=time.time()hotdogs.append(Hotdog(0,-55,h))else:returndef conPaint():canvas.blit(bg,(0,0)) canvas.blit(bullet_tip,(800,5))fillText(str(hero.score),(880,40))hero.paint()for d in hotdogs:d.paint()def conStep():for d in hotdogs:d.step() hero=Hero(450, 450, player) hotdogs=[] lastTime=-100 interval=0.5 t=60 n=0 states = 'RUNNING' #設置游戲默認狀態為運行狀態

文字及檢測部分

檢測是檢測熱狗與人發生的碰撞,及寫出分數并加1。

def gameTime():global t,ncanvas.blit(time_tip,(20,20))fillText(str(t),(35,35))if n%50==0:t=t-1n=n+1def checkHit(): #檢測熱狗是否與人物發生碰撞for d in hotdogs:if hero.hit(d):hero.score = hero.score + 1hotdogs.remove(d)def control():global statesif states == 'RUNNING':conEnter()conPaint()conStep()gameTime()checkHit()hero.outOfBounds()if t <= 0:states = 'OVER'if states == 'OVER':canvas.blit(end,(0,0))if hero.score < 10:fillTextOver(str(hero.score),(485,390))else:fillTextOver(str(hero.score),(470,390)) # 工具方法-寫文字方法 def fillText(text, position, view=canvas):# 設置字體樣式和大小my_font = pygame.font.Font("my_font/font1.ttf", 30)# 渲染文字text = my_font.render(text, True, (255, 255, 255))view.blit(text, position)def fillTextOver(text, position, view=canvas):my_font = pygame.font.Font("my_font/font1.ttf", 50)# 渲染文字text = my_font.render(text, True, (255, 255, 255))view.blit(text, position)

3.最后一部分,游戲運行部分

加上這一段,可以幫助前面代碼持續運行并保持至GAME OVER。

while True:control()# 監聽有沒有按下退出按鈕handleEvent()# 更新屏幕內容pygame.display.update()#延時10毫秒 pygame.time.delay(10)

4.全部代碼

全部代碼如下:

#coding:utf-8 import pygame from pygame.locals import * import time import random import sys import os #初始化pygame環境 pygame.init ()#創建一個長寬分別為1300/700窗口 os.environ[ 'SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (100, 25) canvas = pygame.display.set_mode((1000,625)) canvas.fill((255,255,255))#設置窗口標題 pygame.display.set_caption("熱狗大戰")#加載圖片 bg = pygame.image.load("images/bg.jpg") h = pygame.image.load("images/hotdog.png") player = pygame.image.load("images/hero.png") end=pygame.image.load("images/end.jpg") bullet_tip=pygame.image.load("images/bullet_tip.png") time_tip=pygame.image.load("images/time_tip.png")def handleEvent(): for event in pygame.event.get():if event.type == QUIT :pygame.quit() sys.exit()if states == 'RUNNING':if event.type == KEYDOWN and event.key == K_LEFT:hero.left()if event.type == KEYDOWN and event.key == K_RIGHT:hero.right()class Hero():def __init__(self,x,y,img):self.width=80self.height=133self.x=xself.y=yself.img=imgself.score=0def paint(self):canvas.blit(self.img,(self.x,self.y))def hit(self,c): #代表熱狗return c.x > self.x - c.width and \c.x < self.x + self.width and \c.y > self.y - c.height and \c.y < self.y + self.heightdef left(self):self.x = self.x - 50def right(self):self.x = self.x + 50def outOfBounds(self):if self.x < 0:self.x = self.x + 50if self.x > 1000 - self.width:self.x = self.x - 50class Hotdog():def __init__(self,x,y,img):self.width=30self.height=55self.x=random.randint(0,(1000-self.width))self.y=-self.heightself.img=imgdef paint(self):canvas.blit(self.img,(self.x,self.y))def step(self):self.y=self.y+10def isActionTime(lastTime,interval):if lastTime==0:return TruecurrentTime=time.time()return currentTime-lastTime>=intervaldef conEnter():global lastTimeif isActionTime(lastTime,interval):lastTime=time.time()hotdogs.append(Hotdog(0,-55,h))else:returndef conPaint():canvas.blit(bg,(0,0)) canvas.blit(bullet_tip,(800,5))fillText(str(hero.score),(880,40))hero.paint()for d in hotdogs:d.paint()def conStep():for d in hotdogs:d.step() hero=Hero(450, 450, player) hotdogs=[] lastTime=-100 interval=0.5 t=60 n=0 states = 'RUNNING' #設置游戲默認狀態為運行狀態def gameTime():global t,ncanvas.blit(time_tip,(20,20))fillText(str(t),(35,35))if n%50==0:t=t-1n=n+1def checkHit(): #檢測熱狗是否與人物發生碰撞for d in hotdogs:if hero.hit(d):hero.score = hero.score + 1hotdogs.remove(d)def control():global statesif states == 'RUNNING':conEnter()conPaint()conStep()gameTime()checkHit()hero.outOfBounds()if t <= 0:states = 'OVER'if states == 'OVER':canvas.blit(end,(0,0))if hero.score < 10:fillTextOver(str(hero.score),(485,390))else:fillTextOver(str(hero.score),(470,390)) # 工具方法-寫文字方法 def fillText(text, position, view=canvas):# 設置字體樣式和大小my_font = pygame.font.Font("my_font/font1.ttf", 30)# 渲染文字text = my_font.render(text, True, (255, 255, 255))view.blit(text, position)def fillTextOver(text, position, view=canvas):my_font = pygame.font.Font("my_font/font1.ttf", 50)# 渲染文字text = my_font.render(text, True, (255, 255, 255))view.blit(text, position) while True:control()# 監聽有沒有按下退出按鈕handleEvent()# 更新屏幕內容pygame.display.update()#延時10毫秒 pygame.time.delay(10)

全文總共174行,打起來并不難,希望大家多打代碼,多練手。想要素材請發郵箱注明“素材“二字,想要全部代碼及素材請發郵箱并注明”代碼”二字,發在評論區或私信都可以!
另外,本人第一次寫博客,代碼或解釋有何不對可以指出!
記得點贊哦!!!

總結

以上是生活随笔為你收集整理的python热狗大战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人最新网址 | 岛国久久久 | 一区二区三区免费观看视频 | 少妇视频 | 中文字幕91视频 | 国产美女精品视频国产 | 国产精品刘玥久久一区 | 免费看一级 | 超碰影院在线 | 久久久久人妻精品一区二区三区 | 伊人影视网 | 国产精品久久久久久亚洲调教 | 完全免费在线视频 | 91成人免费网站 | 天堂视频网 | 亚色中文| 色偷偷在线观看 | 日本五十路女优 | 狠狠干夜夜骑 | 欧美另类精品xxxx孕妇 | 久久精品香蕉 | 五月深爱婷婷 | 国产极品福利 | 欧产日产国产精品 | 中文字幕乱码人妻二区三区 | 国产传媒第一页 | 久久黄色大片 | 亚洲欧美另类综合 | 久草毛片 | 69视频免费| 亚洲国产精品人人爽夜夜爽 | 99成人国产精品视频 | 国产超碰在线观看 | 最近2019中文字幕大全第二页 | 国产在线视频一区二区 | 麻豆国产在线播放 | 日韩精品在线免费观看视频 | 玖玖爱免费视频 | 秋霞欧美一区二区三区视频免费 | 成人做爰69片免费看 | 97精品在线观看 | 成人娱乐网 | 久久精品一区二区在线观看 | 日鲁鲁 | 久久综合精品国产二区无码不卡 | 亚洲自拍第三页 | 亚瑟av在线 | 奇米影视狠狠干 | 黄色小说在线免费观看 | 日韩欧美第一页 | 欧美做爰啪啪xxxⅹ性 | 国产老肥熟 | 欧美又粗又长又爽做受 | 国产一区二区精品久久 | av不卡在线观看 | 成人wwwww免费观看 | 大胸美女啪啪 | 天堂а√在线中文在线 | 98国产视频| 国产一区精品视频 | 自拍视频网址 | 91丝袜国产在线播放 | 欧美最猛黑人xxxx黑人猛交 | 天天射影院| 一边摸上面一边摸下面 | 狠狠干夜夜草 | jizz亚洲女人高潮大叫 | 欧美一a一片一级一片 | 高清一区在线观看 | 2019中文字幕在线免费观看 | 色婷婷综合久久久久中文 | 黄黄的视频在线观看 | 亚洲 欧美 国产 另类 | a毛片大片 | 国产精品美女久久久久av爽 | 一级免费av| av毛片在线免费观看 | 中文日韩 | 天天爽天天 | 娇妻被肉到高潮流白浆 | 久久99精品久久久久久噜噜 | 网站一区二区 | 国产特级黄色录像 | 狂躁美女大bbbbbb黑人 | 亚洲成人18| 51精品国产人成在线观看 | 91丝袜| 国产精品1区2区 | 成人手机看片 | 激情戏网站 | 欧美日韩国产一区二区三区在线观看 | sm一区二区三区 | 第一av在线| 久久精品国产亚洲av蜜臀色欲 | 天天爽天天做 | 男生吃小头头的视频 | 潘甜甜在线 | 日本69少妇| 三级在线看中文字幕完整版 |