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()
실행 결과:이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.