CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Problème] Pygame

Gogo8235
Gogo8235
Niveau 6
25 juillet 2021 à 02:37:50

Alors avant tout je vais devoir vous expliquer mon environnement de travail. Donc j'ai 15 ans je n'ai donc pas d'ordinateur personnel ce qui me force à coder sur mon téléphone j'utilise donc Pydroid 3 ce qui est déjà très bien mais il y a quelques désavantage par exemple je n'ai pas les flèches ce qui est embêtant pour un jeu qui les utilisent car je souhaite faire un snake avec Pygame pour cela je me suis aidée d'un code trouver sur internet mais un problème se pose comme je n'ai pas de flèche je me suis dit pourquoi pas faire bouger mon serpent avec la position de là où on clique en haut en bas ect j'utilise donc pygame.mouse.get_pos pour savoir où je clic cependant dans le code ci-dessous quand je clic vers le haut mon serpent va en bas je cherche donc l'erreur que j'ai fait depuis quelques heures.
Je suis bien sûr débutant en python et surtout en Pygame cela est donc peut-être une erreur toute bête.

Gogo8235
Gogo8235
Niveau 6
25 juillet 2021 à 02:39:22
import pygame, sys, time, random


# Difficulty settings
# Easy      ->  10
# Medium    ->  25
# Hard      ->  40
# Harder    ->  60
# Impossible->  120
difficulty = 25

# Window size
frame_size_x = 1080
frame_size_y = 1400

# Checks for errors encountered
check_errors = pygame.init()
# pygame.init() example output -> (6, 0)
# second number in tuple gives number of errors
if check_errors[1] > 0:
    print(f'[!] Had {check_errors[1]} errors when initialising game, exiting...')
    sys.exit(-1)
else:
    print('[+] Game successfully initialised')


# Initialise game window
pygame.display.set_caption('Snake Eater')
game_window = pygame.display.set_mode((frame_size_x, frame_size_y))


# Colors (R, G, B)
black = pygame.Color(0, 0, 0)
white = pygame.Color(255, 255, 255)
red = pygame.Color(255, 0, 0)
green = pygame.Color(0, 255, 0)
blue = pygame.Color(0, 0, 255)


# FPS (frames per second) controller
fps_controller = pygame.time.Clock()


# Game variables
snake_pos = [100, 50]
snake_body = [[100, 50], [100-10, 50], [100-(2*10), 50]]

food_pos = [random.randrange(1, (frame_size_x//10)) * 10, random.randrange(1, (frame_size_y//10)) * 10]
food_spawn = True

direction = 'RIGHT'
change_to = direction

score = 0


# Game Over
def game_over():
    my_font = pygame.font.SysFont('times new roman', 90)
    game_over_surface = my_font.render('YOU DIED', True, red)
    game_over_rect = game_over_surface.get_rect()
    game_over_rect.midtop = (frame_size_x/2, frame_size_y/4)
    game_window.fill(black)
    game_window.blit(game_over_surface, game_over_rect)
    show_score(0, red, 'times', 20)
    pygame.display.flip()
    time.sleep(3)
    pygame.quit()
    sys.exit()


# Score
def show_score(choice, color, font, size):
    score_font = pygame.font.SysFont(font, size)
    score_surface = score_font.render('Score : ' + str(score), True, color)
    score_rect = score_surface.get_rect()
    if choice == 1:
        score_rect.midtop = (frame_size_x/10, 15)
    else:
        score_rect.midtop = (frame_size_x/2, frame_size_y/1.25)
    game_window.blit(score_surface, score_rect)
    # pygame.display.flip()


# Main logic
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        # Whenever a key is pressed down
        elif event.type == pygame.KEYDOWN:
            # W -> Up; S -> Down; A -> Left; D -> Right
            if event.key == pygame.K_UP or event.key == ord('2'):
                change_to = 'UP'
            if event.key == pygame.K_DOWN or event.key == ord('8'):
                change_to = 'DOWN'
            if event.key == pygame.K_LEFT or event.key == ord('4'):
                change_to = 'LEFT'
            if event.key == pygame.K_RIGHT or event.key == ord('6'):
                change_to = 'RIGHT'
            # Esc -> Create event to quit the game
            if event.key == pygame.K_ESCAPE:
                pygame.event.post(pygame.event.Event(pygame.QUIT))
        if event.type == pygame.MOUSEBUTTONUP:
              pos = pygame.mouse.get_pos()
              if pos[0] <= 700:
              	change_to = 'DOWN'
              if pos[0] >= 700:
              	change_to = 'UP'
    
    # Making sure the snake cannot move in the opposite direction instantaneously
    if change_to == 'UP' and direction != 'DOWN':
        direction = 'UP'
    if change_to == 'DOWN' and direction != 'UP':
        direction = 'DOWN'
    if change_to == 'LEFT' and direction != 'RIGHT':
        direction = 'LEFT'
    if change_to == 'RIGHT' and direction != 'LEFT':
        direction = 'RIGHT'

    # Moving the snake
    if direction == 'UP':
        snake_pos[1] -= 10
    if direction == 'DOWN':
        snake_pos[1] += 10
    if direction == 'LEFT':
        snake_pos[0] -= 10
    if direction == 'RIGHT':
        snake_pos[0] += 10

    # Snake body growing mechanism
    snake_body.insert(0, list(snake_pos))
    if snake_pos[0] == food_pos[0] and snake_pos[1] == food_pos[1]:
        score += 1
        food_spawn = False
    else:
        snake_body.pop()

    # Spawning food on the screen
    if not food_spawn:
        food_pos = [random.randrange(1, (frame_size_x//10)) * 10, random.randrange(1, (frame_size_y//10)) * 10]
    food_spawn = True

    # GFX
    game_window.fill(black)
    for pos in snake_body:
        # Snake body
        # .draw.rect(play_surface, color, xy-coordinate)
        # xy-coordinate -> .Rect(x, y, size_x, size_y)
        pygame.draw.rect(game_window, green, pygame.Rect(pos[0], pos[1], 10, 10))

    # Snake food
    pygame.draw.rect(game_window, white, pygame.Rect(food_pos[0], food_pos[1], 10, 10))

    # Game Over conditions
    # Getting out of bounds
    if snake_pos[0] < 0 or snake_pos[0] > frame_size_x-10:
        game_over()
    if snake_pos[1] < 0 or snake_pos[1] > frame_size_y-10:
        game_over()
    # Touching the snake body
    for block in snake_body[1:]:
        if snake_pos[0] == block[0] and snake_pos[1] == block[1]:
            game_over()

    show_score(1, white, 'consolas', 20)
    # Refresh game screen
    pygame.display.update()
    # Refresh rate
    fps_controller.tick(difficulty)
Gogo8235
Gogo8235
Niveau 6
27 juillet 2021 à 00:03:42

Up

godrik
godrik
Niveau 30
27 juillet 2021 à 00:40:37

J'ai deja du coder sur un telephone parceque j'avais besoin de faire quelquechose en urgence. C'est vraiment un environment terrible pour travailler. Tu n'as pas besoin d'une machine de fou pour commencer a apprendre a programmer. Franchement n'importe qel machine de base fera probablement l'affaire. Ou n'importe quel machine recycle de ton lycee, d'un voisin ou autre, un vieux portable dont la batterie est morte fera probablement l'affaire.

Tu gagneras enormement de confort dans ton apprentissage.

Gogo8235
Gogo8235
Niveau 6
29 juillet 2021 à 16:04:21

Le 27 juillet 2021 à 00:40:37 :
J'ai deja du coder sur un telephone parceque j'avais besoin de faire quelquechose en urgence. C'est vraiment un environment terrible pour travailler. Tu n'as pas besoin d'une machine de fou pour commencer a apprendre a programmer. Franchement n'importe qel machine de base fera probablement l'affaire. Ou n'importe quel machine recycle de ton lycee, d'un voisin ou autre, un vieux portable dont la batterie est morte fera probablement l'affaire.

Tu gagneras enormement de confort dans ton apprentissage.

Ok ok je vais voir pour ça

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment