Python 기반 매일 쿨 링 기능 구현

4955 단어 Python매일
지난번 에 쓴 식물 대전 좀 비 와 러시아 블록 의 반응 이 괜 찮 은 것 같 아서 이번 글 은 더욱 힘 이 났 다.
이번 에는 하루 하루 쿨 하 게 뛰 는 걸 로 하 겠 습 니 다.
在这里插入图片描述
이렇게 나 왔어요.
다음은 모든 코드 를 업데이트 해 보도 록 하 겠 습 니 다.
그대로

import pygame,sys
import random
게임 프로필 적어 주세요.

width = 1200   #    
height = 508   #    
size = width, height 
score=None    #  
myFont=myFont1=None  #  
surObject=None   #        
surGameOver=None  #      
bg=None     #    
role=None    #    
object=None    #       
objectList=[]   #       
clock=None    #  
gameState=None   #    (0,1)  (   ,    )
인물 을 묘사 하 다

class Role: #  
 def __init__(self,surface=None,y=None):
  self.surface=surface
  self.y=y
  self.w=(surface.get_width())/12
  self.h=surface.get_height()/2
  self.currentFrame=-1
  self.state=0  #0      ,1      ,2      
  self.g=1   #     
  self.vy=0   #y     
  self.vy_start=-20 #      
 def getRect(self):
  return (0,self.y+12,self.w,self.h)
장애물 을 쓰다

class Object: #   
 def __init__(self,surface,x=0,y=0):
  self.surface=surface
  self.x=x
  self.y=y
  self.w=surface.get_width()
  self.h=surface.get_height()
  self.currentFrame=random.randint(0,6)
  self.w = 100
  self.h = 100
 def getRect(self):
  return (self.x,self.y,self.w,self.h)
 def collision(self,rect1,rect2):
  #    
  if (rect2[0]>=rect1[2]-20) or (rect1[0]+40>=rect2[2])or (rect1[1]+rect1[3]<rect2[1]+20) or (rect2[1]+rect2[3]<rect1[1]+20):
   return False
  return True
배경 을 쓰다

class Bg: #  
 def __init__(self,surface):
  self.surface=surface
  self.dx=-10
  self.w=surface.get_width()
  self.rect=surface.get_rect()

def initGame():
  
 global bg,role,clock,gameState,surObject,surGameOver,score,myFont,myFont1,objectList
 #     
 score=0
 #   
 objectList=[]
 #    
 myFont=pygame.font.Font("./freesansbold.ttf",32)
 myFont1=pygame.font.Font("./freesansbold.ttf",64) 
 #        (          )
 clock = pygame.time.Clock()
 #       
 gameState=0
 #    
 surBg=pygame.image.load("image/bg.bmp").convert_alpha()
 bg=Bg(surBg)
 #    
 surGameOver=pygame.image.load("image/gameover.bmp").convert_alpha()
 #    
 surRole=pygame.image.load("image/role.png").convert_alpha() 
 role=Role(surRole,508-85)
 #     
 surObject=pygame.image.load("image/object.png").convert_alpha() 


def addObject():
 global surObject,object,objectList,object
 rate=4
 #       
 if not random.randint(0,300)<rate:
  return
 y=random.choice([height-100,height-200,height-300,height-400])
 object=Object(surObject,width+40,y)
 objectList.append(object)


def updateLogic():
 global gameState,score
 #      
 for event in pygame.event.get():
  if event.type == pygame.QUIT:
    sys.exit()
  elif event.type==pygame.KEYDOWN:
   #     
   if gameState==0:
    if event.key==pygame.K_SPACE:
     if role.state==0:
      role.state=1
      role.vy=role.vy_start
     elif role.state==1:
      role.state=2
      role.vy=role.vy_start
   elif gameState==1:
    if event.key==pygame.K_SPACE:
     #      
     initGame()
     
 if gameState==0:
  #      
  bg.dx+=10
  if bg.dx==1200:
   bg.dx=0 
   
  #      
  if role.state==0: 
   role.currentFrame+=1
   if role.currentFrame==12:
    role.currentFrame=0 
  else:
   role.y+=role.vy
   role.vy+=role.g 
   if role.y>=508-85:
    role.y=508-85
    role.state=0
  #      
  addObject()
  
  for object in objectList:
   object.x-=10  #     
   #        ,     
   if object.x+object.w<=0:
    objectList.remove(object)
    score+=10 #     , 10 
    print("       ") 
   #    
   if object.collision(role.getRect(),object.getRect()):
    if(object.currentFrame==6):
     objectList.remove(object)
     score+=100 #    100 
     print(score)
     print("      ")
    else: 
     gameState=1 #    
     print("     !")
ok 라,이것 이 바로 이 매일 멋 지게 달 리 는 모든 코드 입 니 다.문제 가 있 으 면 메 시 지 를 남 겨 도 됩 니 다.제 가 보면 다 돌아 올 겁 니 다.
파 이 썬 을 기반 으로 매일 쿨 링 기능 을 실현 하 는 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 파 이 썬 은 매일 쿨 링 내용 을 쓰 고 있 습 니 다.예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기