最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pygame學(xué)習(xí)筆記(6):完成一個(gè)簡單的游戲

 更新時(shí)間:2015年04月15日 09:44:26   投稿:junjie  
這篇文章主要介紹了pygame學(xué)習(xí)筆記(6):完成一個(gè)簡單的游戲,本文綜合了學(xué)習(xí)過的知識(shí),完成一個(gè)簡單的游戲開發(fā),是本系列文章的最后一篇,需要的朋友可以參考下

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

 

# -*- coding: cp936 -*-
'''
一個(gè)超級(jí)簡單的游戲
左右鍵控制小人移動(dòng)去接空中下來的金幣,接住金幣得5分,接不住游戲結(jié)束,金幣速度會(huì)隨著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 #記錄向左移動(dòng)步數(shù),用來控制圖片
iright=10 #記錄向右移動(dòng)步數(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

相關(guān)文章

最新評(píng)論

盘山县| 报价| 高唐县| 高密市| 泾川县| 武胜县| 佛学| 韶山市| 孟连| 南岸区| 察哈| 洮南市| 赣州市| 苍溪县| 剑河县| 唐山市| 正蓝旗| 武乡县| 望都县| 大兴区| 奇台县| 习水县| 银川市| 轮台县| 惠来县| 上栗县| 延寿县| 拜城县| 文登市| 高碑店市| 台北县| 普格县| 渑池县| 德清县| 耿马| 南昌县| 邯郸县| 和平县| 庄河市| 来宾市| 富川|