一个简单的pygame接金币游戏
生活随笔
收集整理的這篇文章主要介紹了
一个简单的pygame接金币游戏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
左右鍵控制小人移動去接空中下來的金幣,接住金幣得5分,接不住游戲結束,金幣速度會隨著level的關數
而越來越快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_positionclass 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_positionself.speed=speeddef 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 OVERmy_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=0return highscorebakscreen=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 #記錄向左移動步數,用來控制圖片
iright=10 #記錄向右移動步數,用來控制圖片
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):#當得分是50的倍數時修改levellevelnum=scorenum/50+1speed=[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=10iright=iright+1filename='image\\'+str(iright)+'.png'if x<50 :x=50else:x=x-10backimg_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=0ileft=ileft+1filename='image\\'+str(ileft)+'.png'if x>560:x=560else:x=x+10backimg_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:#判斷金幣是否著地,一但著地,游戲結束loadgameover(scorenum,highscore)if mygold.rect.colliderect(backimg_surface.rect):#判斷金幣是否與小人碰撞,如果碰撞表示小人接到金幣scorenum+=5loadtext(levelnum,scorenum,highscore)goldx=random.randint(50,580)mygold=goldrect([goldx,100],speed) pygame.display.update()
轉載于:https://www.cnblogs.com/Alexander11/p/4227767.html
總結
以上是生活随笔為你收集整理的一个简单的pygame接金币游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 结构体位域一题
- 下一篇: 第二十六节(对象流,File类)