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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python编程制作接金币游戏_pygame学习笔记(6):完成一个简单的游戏

發(fā)布時(shí)間:2023/12/1 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python编程制作接金币游戏_pygame学习笔记(6):完成一个简单的游戏 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

學(xué)了這么長時(shí)間的Pygame,一直想寫個游戲?qū)崙?zhàn)一下。看起來很簡單的游戲,寫其來怎么這么難。最初想寫個俄羅斯方塊,想了很長時(shí)間如何實(shí)現(xiàn),想來想去,也沒寫出來,于是干脆下載別人的代碼來讀。后來,要想寫一個幫助記憶的挖寶箱的游戲,結(jié)果也沒完成。唯一完成了就是下面這個小人接金幣的游戲,超級簡單,通過左右鍵控制小人移動去接空中下來的金幣,接住金幣得5分,接不住游戲結(jié)束,金幣速度會隨著level的關(guān)數(shù)而越來越快。完成這段代碼后,我依然覺得這段代碼寫得很差,確實(shí)也是自己對pygame只是掌握了皮毛,對surface、sprite這些理解的還不透徹。這里把代碼寫出來,有時(shí)間的大牛們可以幫助指點(diǎn)一下,讓我也有所提高。

# -*- coding: cp936 -*-

'''

一個超級簡單的游戲

左右鍵控制小人移動去接空中下來的金幣,接住金幣得5分,接不住游戲結(jié)束,金幣速度會隨著level的關(guān)數(shù)

而越來越快

'''

import pygame,sys,os,random

pygame.init()

class rect():#畫出小人

def __init__(self,filename,initial_position):

self.image=pygame.image.load(filename)

self.rect=self.image.get_rect()

self.rect.topleft=initial_position

class goldrect(pygame.sprite.Sprite):#繪出金幣

def __init__(self,gold_position,speed):

pygame.sprite.Sprite.__init__(self)

self.image=pygame.image.load('image\\gold.png')

self.rect=self.image.get_rect()

self.rect.topleft=gold_position

self.speed=speed

def move(self):

self.rect=self.rect.move(self.speed)

def drawback(): #繪出背景圖片

my_back=pygame.image.load('image\\qi3.jpg')

bakscreen.blit(my_back,[0,0])

def loadtext(levelnum,score,highscore):#繪出成績、level、最高分等

my_font=pygame.font.SysFont(None,24)

levelstr='Level:'+str(levelnum)

text_screen=my_font.render(levelstr, True, (255, 0, 0))

bakscreen.blit(text_screen, (650,50))

highscorestr='Higescore:'+str(highscore)

text_screen=my_font.render(highscorestr, True, (255, 0, 0))

bakscreen.blit(text_screen, (650,80))

scorestr='Score:'+str(score)

text_screen=my_font.render(scorestr, True, (255, 0, 0))

bakscreen.blit(text_screen, (650,110))

def loadgameover(scorenum,highscore):#繪出GAME OVER

my_font=pygame.font.SysFont(None,50)

levelstr='GAME OVER'

over_screen=my_font.render(levelstr, True, (255, 0, 0))

bakscreen.blit(over_screen, (300,240))

highscorestr='YOUR SCORE IS '+str(scorenum)

over_screen=my_font.render(highscorestr, True, (255, 0, 0))

bakscreen.blit(over_screen, (280,290))

if scorenum>int(highscore):#寫入最高分

highscorestr='YOUR HAVE GOT THE HIGHEST SCORE!'

text_screen=my_font.render(highscorestr, True, (255, 0, 0))

bakscreen.blit(text_screen, (100,340))

highfile=open('highscore','w')

highfile.writelines(str(scorenum))

highfile.close()

def gethighscore(): #讀取最高分

if os.path.isfile('highscore'):

highfile=open('highscore','r')

highscore=highfile.readline()

highfile.close()

else:

highscore=0

return highscore

bakscreen=pygame.display.set_mode([800,600])

bakscreen.fill([0,160,233])

pygame.display.set_caption('Dig!Dig!')

drawback()

levelnum=1 #level

scorenum=0 #得分

highscore=gethighscore()#最高分

ileft=1 #記錄向左移動步數(shù),用來控制圖片

iright=10 #記錄向右移動步數(shù),用來控制圖片

x=100

y=450

filename='image\\1.png'

backimg_ren=rect(filename,[x,y])

bakscreen.blit(backimg_ren.image,backimg_ren.rect)

loadtext(levelnum,scorenum,highscore)

goldx=random.randint(50,580)

speed=[0,levelnum]

mygold=goldrect([goldx,100],speed)

pygame.display.update()

while True:

if scorenum>0 and scorenum/50.0==int(scorenum/50.0):#當(dāng)?shù)梅质?0的倍數(shù)時(shí)修改level

levelnum=scorenum/50+1

speed=[0,levelnum]

for event in pygame.event.get():

if event.type==pygame.QUIT:

sys.exit()

#make gold

pressed_keys = pygame.key.get_pressed()

if pressed_keys[pygame.K_LEFT]:#按下左鍵

drawback()

loadtext(levelnum,scorenum,highscore)

if iright > 14 :iright=10

iright=iright+1

filename='image\\'+str(iright)+'.png'

if x<50 :

x=50

else:

x=x-10

backimg_surface=rect(filename,[x,y])

bakscreen.blit(backimg_surface.image,backimg_surface.rect)

if pressed_keys[pygame.K_RIGHT]:#按下右鍵

drawback()

loadtext(levelnum,scorenum,highscore)

if ileft > 4 :ileft=0

ileft=ileft+1

filename='image\\'+str(ileft)+'.png'

if x>560:

x=560

else:

x=x+10

backimg_surface=rect(filename,[x,y])

bakscreen.blit(backimg_surface.image,backimg_surface.rect)

drawback()

loadtext(levelnum,scorenum,highscore)

mygold.move()

bakscreen.blit(mygold.image,mygold.rect)

backimg_surface=rect(filename,[x,y])

bakscreen.blit(backimg_surface.image,backimg_surface.rect)

if mygold.rect.top>600:#判斷金幣是否著地,一但著地,游戲結(jié)束

loadgameover(scorenum,highscore)

if mygold.rect.colliderect(backimg_surface.rect):#判斷金幣是否與小人碰撞,如果碰撞表示小人接到金幣

scorenum+=5

loadtext(levelnum,scorenum,highscore)

goldx=random.randint(50,580)

mygold=goldrect([goldx,100],speed)

pygame.display.update()

程序中用到的資源可從這里下載:文件名:gold.7z, 訪問地址:http://www.kuaipan.cn/file/id_16699292408348719.htm

本文標(biāo)題: pygame學(xué)習(xí)筆記(6):完成一個簡單的游戲

本文地址: http://www.cppcns.com/jiaoben/python/122745.html

總結(jié)

以上是生活随笔為你收集整理的python编程制作接金币游戏_pygame学习笔记(6):完成一个简单的游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。