python 뱀 먹 기 게임 실현

8523 단어 python탐식 사
게임 을 만 드 는 것 은 블 로 거들 이 매우 동경 하 는 것 입 니 다.(블 로 거들 은 게임 을 좋아 합 니 다)게임 을 만 드 는 데 한 걸음 한 걸음 걸 어야 합 니 다!오늘 은 아주 전형 적 인 게임 을 만들어 보 겠 습 니 다.뱀 을 탐식 합 니 다!!!
효과 그림:

우선 pygame 모듈 도입
pip install pygame
탐식 사 를 만 드 는 데 는 다음 과 같은 몇 가지 절차 가 있 습 니 다!차례차례 생각 하 다
1.배경 크기,즉 게임 상자 크기 를 설정 합 니 다.-픽 셀(px)
2.색깔,뱀 색깔,배경 색깔,콩 색깔 설정

#pygame   ,sys  python     
import pygame,sys,random
#        pygame      
from pygame.locals import *
#1,      
#0-255 0   255  
redColor = pygame.Color(255,0,0)
#     
blackColor = pygame.Color(0,0,0)
#      
whiteColor = pygame.Color(255,255,255)
3.뱀의 초기 위치 와 길이,콩의 초기 위치 와 먹 힌 후에 무 작위 로 나타 나 는 위치(아래 와 같다),그리고 뱀의 속도 설정
4.버튼 을 눌 러 뱀의 상하 좌우 조절
5.뱀 을 설치 하여 콩의 위치 와 겹 쳐 콩 을 먹 었 는 지 판단 한다.이때 뱀의 길 이 는 1 을 더 하고 콩 이 사라 지 는 동시에 무 작위 로 나타난다.
6.시작 함수 설정(1,3,4,5 모두 시작 함수 에 설정 가능),종료 함수,사망 방식 판단,그리고 게임 종료 방식(직접 종료 또는 게임 종료)

def main():
 #   pygame
 pygame.init()
 #           
 fpsClock=pygame.time.Clock()
 #  pygame   ,      
 playsurface=pygame.display.set_mode((640,480))
 pygame.display.set_caption('   ')
 #     
 #          (  100,100   )
 snakePosition = [100,100]
 #                        
 snakeBody = [[100,100],[80,100],[60,100]]
 #          
 targetPosition = [300,300]
 #          :             1       0    
 targetflag = 1
 #      --》  
 direction = 'right'
 #        (       )
 changeDirection = direction

def gameover(): #    
 pygame.quit()
 sys.exit()
게임 실행 에 관 해 서 는 시간 이 될 수 있 습 니 다.끊 임 없 는 순환 을 통 해 뱀 이 계속 전진 합 니 다.(버튼 을 설정 하고 개인 적 인 취향 에 따라 버튼 을 누 릅 니 다)

 while True:
 
  for event in pygame.event.get(): #        
   if event.type == QUIT:
    pygame.quit()
    sys.exit()
   elif event.type == KEYDOWN:
    if event.key == K_d:
     changeDirection = 'right'
    if event.key == K_a:
     changeDirection = 'left'
    if event.key ==K_w:
     changeDirection = 'up'
    if event.key ==K_s:
     changeDirection = 'down'
     #      esc  
    if event.key == K_ESCAPE:
     pygame.event.post(pygame.event.Event(QUIT))
방향 을 정 하 라!뱀 이 운행 할 때 고 개 를 돌리 면 안 됩 니 다!앞 뒤 가 안 돼,왼쪽 뒤!

#    
  if changeDirection =='left' and not direction =='right':
   direction = changeDirection
  if changeDirection =='right' and not direction =='left':
   direction = changeDirection
  if changeDirection =='up' and not direction =='down':
   direction = changeDirection
  if changeDirection =='down' and not direction =='up':
   direction = changeDirection
여기 서 픽 셀 의 가감 을 통 해 뱀의 머리 가 위로 이동 하거나 아래로 20px 를 가감 하 는 것 은 상하 로 이동 하 는 것 과 같다.

#        
  if direction =='right':
   snakePosition[0] +=20
  if direction =='left':
   snakePosition[0] -=20
  if direction =='up':
   snakePosition[1] -=20
  if direction =='down':
   snakePosition[1] +=20
  #      
  snakeBody.insert(0,list(snakePosition))
  #               
  if snakePosition[0] == targetPosition[0] and snakePosition[1] ==targetPosition[1]:
   targetflag= 0
  else:
   snakeBody.pop()
  if targetflag ==0:
   x = random.randrange(1,32)
   y = random.randrange(1,24)
   targetPosition = [int(x*20),int(y*20)]
   targetflag =1
  #      
  playsurface.fill(blackColor)
뱀 과 콩 색깔 의 길 이 를 설정 합 니 다.

for position in snakeBody:
   #     serface    serface   ,        
   #     color:  
   #     :rect:      (xy),(width,height)
   #     :width:        width0     
   #  
   pygame.draw.rect(playsurface,redColor,Rect(position[0],position[1],20,20))
   pygame.draw.rect(playsurface, whiteColor, Rect(targetPosition[0], targetPosition[1], 20, 20))
위 에 있 는 것 을 데스크 톱 에 표시 하고 아래 방법 으로 구현 합 니 다.
pygame.display.flip()
게임 종료 판단

 if snakePosition[0] > 620 or snakePosition[0] < 0:
   gameover()
  elif snakePosition[1] >460 or snakePosition[1] <0:
   gameover()
  #      
  fpsClock.tick(2)
기본 적 인 탐식 뱀 절 차 는 위 와 같다.만약 에 득점 을 추가 하거나 시작 과 끝 화면 이 모두 자신의 능력 에 달 려 있다 면 큰 남자 들 은 물 을 뿌 렸 을 것 이다.
다음은 전체 코드 입 니 다.

#pygame   ,sys  python     
import pygame,sys,random
#        pygame      
from pygame.locals import *
#1,      
#0-255 0   255  
redColor = pygame.Color(255,0,0)
#     
blackColor = pygame.Color(0,0,0)
#      
whiteColor = pygame.Color(255,255,255)
 
 
#         
def gameover():
 pygame.quit()
 sys.exit()
#  main  --》         
def main():
 #   pygame
 pygame.init()
 #           
 fpsClock=pygame.time.Clock()
 #  pygame   ,      
 playsurface=pygame.display.set_mode((640,480))
 pygame.display.set_caption('   ')
 #     
 #          (  100,100   )
 snakePosition = [100,100]
 #                        
 snakeBody = [[100,100],[80,100],[60,100]]
 #          
 targetPosition = [300,300]
 #          :             1       0    
 targetflag = 1
 #      --》  
 direction = 'right'
 #        (       )
 changeDirection = direction
 while True:
 
  for event in pygame.event.get(): #        
   if event.type == QUIT:
    pygame.quit()
    sys.exit()
   elif event.type == KEYDOWN:
    if event.key == K_d:
     changeDirection = 'right'
    if event.key == K_a:
     changeDirection = 'left'
    if event.key ==K_w:
     changeDirection = 'up'
    if event.key ==K_s:
     changeDirection = 'down'
     #      esc  
    if event.key == K_ESCAPE:
     pygame.event.post(pygame.event.Event(QUIT))
 
  #    
  if changeDirection =='left' and not direction =='right':
   direction = changeDirection
  if changeDirection =='right' and not direction =='left':
   direction = changeDirection
  if changeDirection =='up' and not direction =='down':
   direction = changeDirection
  if changeDirection =='down' and not direction =='up':
   direction = changeDirection
 
  #        
  if direction =='right':
   snakePosition[0] +=20
  if direction =='left':
   snakePosition[0] -=20
  if direction =='up':
   snakePosition[1] -=20
  if direction =='down':
   snakePosition[1] +=20
  #      
  snakeBody.insert(0,list(snakePosition))
  #               
  if snakePosition[0] == targetPosition[0] and snakePosition[1] ==targetPosition[1]:
   targetflag= 0
  else:
   snakeBody.pop()
  if targetflag ==0:
   x = random.randrange(1,32)
   y = random.randrange(1,24)
   targetPosition = [int(x*20),int(y*20)]
   targetflag =1
  #      
  playsurface.fill(blackColor)
  for position in snakeBody:
   #     serface    serface   ,        
   #     color:  
   #     :rect:      (xy),(width,height)
   #     :width:        width0     
   #  
   pygame.draw.rect(playsurface,redColor,Rect(position[0],position[1],20,20))
   pygame.draw.rect(playsurface, whiteColor, Rect(targetPosition[0], targetPosition[1], 20, 20))
 
  #         
  pygame.display.flip()
  #        
  if snakePosition[0] > 620 or snakePosition[0] < 0:
   gameover()
  elif snakePosition[1] >460 or snakePosition[1] <0:
   gameover()
  #      
  fpsClock.tick(2)
#       
if __name__ =='__main__':
 main() 
실행 결과:

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기