Tem 2 questões que não estou sabendo resolver para finalizar meu jogo.
1 - Quando a posição da cobra for a mesma que a da maçã, o tamanho da cobra tem que aumentar.
2 - quando o tamanho aumentar, sempre deixar o tamanho na altura.
OBS da 2 - Nas alterações que fiz tentando resolver, pude perceber que quando aumento o tamanho na ALTURA, quando o usuário mover a cobra para direita ou esquerda, a cobra fica com a orientação errada.
Preciso de uma ideia pra resolver essas 2 questões
se tiver alguma sugestão de melhoria para o meu codigo, por favor, me informem :))
######CODIGO##############
import pygame
from random import randint
##Variaveis Globais
branco=(255,255,255)
preto=(0,0,0)
vermelho=(255,0,0)
verde=(0,255,0)
azul=(0,0,255)
largura = 640
altura = 480
tamanho = 10
tamanhoMaca = 10 #pixels
tamanhoCobraAltura = 30
tamanhoCobraLargura = 10
try:
pygame.init()
except:
print("erro")
relogio = pygame.time.Clock()
display = pygame.display.set_mode((largura, altura))
pygame.display.set_caption("snake")
def cobra (posiX,posiY):
pygame.draw.rect(display, preto, [posiX, posiY, tamanhoCobraLargura, tamanhoCobraAltura])
def maca(macaX,macaY):
pygame.draw.rect(display, vermelho, [macaX, macaY, tamanhoMaca, tamanhoMaca])
def jogo():
sair = True
posiX=randint(0, (largura-tamanho)/10)*10
posiY=randint(0,(altura-tamanho)/10)*10
macaX = randint(0, (largura - tamanho) / 10) * 10
macaY = randint(0, (altura - tamanho) / 10) * 10
velocidadeX=0
velocidadeY=0
while sair:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sair = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT and velocidadeX != tamanho:
velocidadeY=0
velocidadeX=-tamanho
if event.key == pygame.K_RIGHT and velocidadeX != -tamanho:
velocidadeY=0
velocidadeX=tamanho
if event.key == pygame.K_UP and velocidadeY != tamanho:
velocidadeX=0
velocidadeY=-tamanho
if event.key == pygame.K_DOWN and velocidadeY != -tamanho:
velocidadeX=0
velocidadeY=tamanho
display.fill(branco)
posiX+=velocidadeX
posiY+=velocidadeY
cobra(posiY,posiX)
maca(macaX,macaY)
pygame.display.update()
relogio.tick(15)
if posiX > largura:
posiX = 0
if posiX < 0:
posiX = largura-tamanho
if posiY > altura:
posiY = 0
if posiY < 0:
posiY = altura - tamanho
if ((posiY == macaY) and (macaX == posiX)):
macaX = randint(0, (largura - tamanho) / 10) * 10
macaY = randint(0, (altura - tamanho) / 10) * 10
jogo()
pygame.quit()