pygame小游戏代码_Py之pygame:有趣好玩——利用pygame库实现一个移动底座弹球的小游戏...
生活随笔
收集整理的這篇文章主要介紹了
pygame小游戏代码_Py之pygame:有趣好玩——利用pygame库实现一个移动底座弹球的小游戏...
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Py之pygame:有趣好玩——利用pygame庫實(shí)現(xiàn)一個移動底座彈球的小游戲
目錄
輸出結(jié)果
實(shí)現(xiàn)代碼
輸出結(jié)果
?
實(shí)現(xiàn)代碼
# -*- coding: utf-8 -*-#Py之pygame:有趣好玩——利用pygame庫實(shí)現(xiàn)一個移動底座彈球的小游戲import pygame as pg from pygame.locals import * #將pygame所有常量導(dǎo)入,如后面的QUIT from time import sleep import sys#設(shè)置基本屏幕參數(shù) pg.init() #初始化,如果沒有的話字體會報錯等等 scr=pg.display.set_mode((600,550)) #設(shè)置屏幕大小 pg.display.set_caption(("移動底座彈球的小游戲")) #設(shè)置屏幕標(biāo)題 pp=255, 255, 0 #red是一個元組,表示乒乓球橙色 green=0,255,0 white=255,255,255 dizuo=120, 63, 4 #底座顏色灰土色 pink=255, 0, 255 cs=225,121,21 #乒乓球顏色,橙色#設(shè)計(jì)一下乒乓球的運(yùn)動方式,乒乓球在屏幕內(nèi)運(yùn)動 x=120 #乒乓球的坐標(biāo)設(shè)置為(x,y) y=120 vx=3 #設(shè)置初速度vx,vy,當(dāng)乒乓球到達(dá)屏幕邊緣的時候速度取反,也就是乒乓球到達(dá)左右兩邊緣的時候vx取反,上下邊緣的時候vy取反。 vy=3 a=200 #a代表乒乓板的x坐標(biāo)值,因?yàn)槠古野鍄坐標(biāo)值是固定的My_font=pg.font.Font(None,40) #40是字的大小,設(shè)置字體,None表示沒有,代指pygame默認(rèn)的字體,但是這樣的字體缺點(diǎn)是不能打印出中文。 zt1=pg.font.SysFont('華文楷體',24) #楷體,a=pg.font.get_fonts() #獲得系統(tǒng)自帶的字體 zt2=pg.font.SysFont('華文楷體',20) zt21=pg.font.SysFont('幼圓',29)def printtext(font,text,x,y,color): #設(shè)計(jì)一個函數(shù),在游戲屏幕上打印文本,代碼表示先把文本轉(zhuǎn)換成一個位圖然后打印在屏幕上,打印文本需要打印的具體坐標(biāo)和文本顏色,字體等參數(shù)。img=font.render(text,True,color) #轉(zhuǎn)換為位圖scr.blit(img,(x,y))#設(shè)置得分,基礎(chǔ)記分量,為什么設(shè)置基礎(chǔ)記分量?我想的是經(jīng)過一段時間后乒乓球會加速,從而逐漸增加游戲難度,當(dāng)然,基礎(chǔ)記分量也要翻倍。 c=0 #c是加速器,如果接了10次,那么加速 fs=0 #fs是分?jǐn)?shù),接到一次乒乓球就加分 k=1 #基礎(chǔ)加分量#游戲的主要代碼了,pygame采用幀和輪詢的方式,幀是指會不斷刷新,也就是while True循環(huán),輪詢是不斷的詢問用戶的輸入。 #在下面代碼中,會不斷獲取鼠標(biāo)具體坐標(biāo)和QUIT事件是否發(fā)生。Scr.fill會用RGB值為(199,21,133)的顏色刷新屏幕, #以后畫圓寫字都在這基礎(chǔ)上,下一次循環(huán)后又刷新。因此在屏幕中乒乓球和乒乓板就會動態(tài)呈現(xiàn)出來。 while True:scr.fill((199,21,133)) #游戲背景色background = pg.image.load('F:/File_Python/Resources/00102.jpg').convert()scr.blit(background, (0, 0)) for eve in pg.event.get():if eve.type == QUIT: #點(diǎn)擊左上角的×sys.exit() #如果無效,可以試試exit()函數(shù)mx,my=pg.mouse.get_pos() #獲得鼠標(biāo)的x,y坐標(biāo)a=mx #鼠標(biāo)x坐標(biāo)就是乒乓板的坐標(biāo),因此移動鼠標(biāo)乒乓板也移動#畫乒乓球和畫乒乓板了,我們可以簡化為圓形和矩形pg.draw.circle(scr,pp,(x,y),40,0)pg.draw.rect(scr,dizuo,(a,530,100,20),0)#考慮乒乓球的運(yùn)動,如果乒乓球碰到左右屏幕邊緣,vx取反,碰到上邊緣或者碰到乒乓板的時候,vy取反,其余情況表示乒乓板沒有接觸到乒乓球,跳出循環(huán),游戲結(jié)束。x=x+vxy=y+vyif x>550 or x<40:vx=-vxif y<40:vy=-vyif y>510 and abs(a-x+50)<50:if vy>0:vy=-vyelse:passc=c+1 #每接到3次后乒乓球加速fs=fs+k #加分if c>=3:c=0k=k+k #乒乓球加速后記分量雙倍if vx>0: #加速vx=vx+1else:vx=vx-1else:passelif y>510 and abs(a-x+50)>50:break#在while循環(huán)最后,我寫一下得分,規(guī)則,還有刷新,刷新很重要!sleep(0.005) #休眠一定時間,不然乒乓球速度依然很快printtext(zt21,"移動鼠標(biāo)控制底座左右移動",120,20,pink)printtext(zt2,"得分",550,12,green)printtext(zt2,str(fs),560,32,green)pg.display.update() #在循環(huán)結(jié)束后就是前面乒乓板沒有接觸到乒乓球后發(fā)生的情況,最后是游戲結(jié)束的代碼,畢竟這游戲靠看得分看成敗 scr.fill((28, 69, 135)) #游戲結(jié)束后全屏改變顏色 zt3=pg.font.SysFont('華文楷體',60) zt4=pg.font.SysFont('華文楷體',40) printtext(zt3,"你好,游戲結(jié)束",60,120,white) printtext(zt4,'總得分: '+str(fs),120,400,white) pg.display.update()參考文章
用Python編寫一個打乒乓球小游戲
總結(jié)
以上是生活随笔為你收集整理的pygame小游戏代码_Py之pygame:有趣好玩——利用pygame库实现一个移动底座弹球的小游戏...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python网站框架下载_web.py首
- 下一篇: AI应用开发实战系列之二:从零开始搭建m