Bonjour,

Je dois effectuer un jeu snake pour les cours et j'aimerai un peu t'aide sans me donner les réponses clairement sinon cela n'a pas d’intérêt.

Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#! /usr/bin/env python3
# -*- coding: utf8 -*-
 
# imports ####################################################################
 
import sys
import curses
import random
 
 
# screen handling ############################################################
 
def init_screen():
    screen = curses.initscr()
    screen.keypad(1)
 
    def excepthook(*args):
        cleanup(screen)
        return sys.__excepthook__(*args)
    sys.excepthook = excepthook
 
    curses.noecho()
    curses.halfdelay(2)
    curses.curs_set(0)
 
    return screen
 
 
def display(screen, snake, food):
 
    screen.clear()
    screen.border()
    for l, c in snake:
        screen.addstr(l, c, "O")
    for food_l, food_c in food:
	screen.addstr(food_l,food_c, "X")
    screen.refresh()
 
 
def cleanup(screen):
    screen.keypad(0)
    curses.nocbreak()
    curses.echo()
    curses.endwin()
 
def inside(screen, snake) :
    lmax, cmax = screen.getmaxyx()
# Position de la tête
    l, c = snake[-1]
    snakes = snake
    del snakes[-1]
    if 0 < l < lmax-1 and 0 < c < cmax-1 :
        return False
    	if l,c in snake:
		return True
	else:
		return False		
    else:
        return True
 
def create_food (food, snake, screen):
 
	if food == snake[-1]:
		food_lmax, food_cmax = screen.getmaxyx()
		food_c = random.randint(1,food_cmax-1)
		food_l = random.randint(1,food_lmax-1)
		del food
		food += [(food_l,food_c)]
	return food	
 
# main program ###############################################################
 
def main():
    screen = init_screen()
 
    food_l = 20
    food_c = 100 
    food = []
    food += [(food_l,food_c)]
 
    l = 50
    c = 8
    direc = "right"
 
    snake = [(50,2),(50,3),(50,4),(50,5),(50,6),(50,7),(50,8)]
 
 
    while True:
        k = screen.getch()
        if k == ord('q'):
            break
        elif k == curses.KEY_LEFT:
            if direc == "right":
                direc = "up"
            elif direc == "up":
                direc = "left"
            elif direc == "left":
                direc = "down"
            elif direc == "down":
                direc = "right"
        elif k == curses.KEY_RIGHT:
            if direc == "right":
                direc = "down"
            elif direc == "down":
                direc = "left"
            elif direc == "left":
                direc = "up"
            elif direc == "up":
                direc = "right"
 
        if direc == "right" :
            c = c+1
        elif direc == "left" :
            c = c-1
        elif direc == "up" :
            l = l-1
        elif direc == "down" :
            l = l+1
#Supprime le bout de la gueue pour le deplacmeent 
        del snake[0]
        snake += [(l,c)]
 
	create_food (food, snake, screen)
 
        if inside(screen, snake):
            print "Game Over"
	    break	
 
        else:
            display(screen, snake, food)
	    snake += [(l,c)]
 
    cleanup(screen)
 
 
 
if __name__ == "__main__":
    sys.exit(main())
Question 1 : J'ai une erreur à la ligne 54 qui est if l,c in snake: je ne vois pas ou il y a une erreur à ce niveau la

Question 2 : Ma fonction create_food -> But voulu quand l'emplacement de la food est égal à la tête du serpent je veux supprimer la valeur dans food et lui en donner une nouvelle aléatoirement. (Pour le moment quand je passe sur la food elle ne disparait pas et je ne comprends pas pourquoi)

Question 3 : A la fin je fais un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 if inside(screen, snake):
            print "Game Over"
	    break
en gros la fonction inside fait que si le serpent touche un mur ou lui même ça écrit Game Over mais sans le break plein de Game Over sont écriés à l'écran ( normal vu que j'appelle la fonction dans un while) et si je break comme la je ne vois pas le texte. En gros J'aimerait qu'il affiche game over au milieu de l'écran et que le jeu ce quitte quand j'appuie sur n'importe quelle touche.

Voilà merci d'avance et j'insiste je veux juste des éclaircissements par les réponses