Posté le 14/02/2016 18:23
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 232 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 12/03/2016 18:39 | #
Pour des jeux simples, tu peux voir les Space Invader, les jeux de stratégie de plateau, les jeux de plateforme, des petits rpg en vue de dessus, de la gestion simple, voire un peu de simulation...
Citer : Posté le 12/03/2016 19:18 | #
Merci DS
Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Citer : Posté le 12/03/2016 21:46 | #
Les rpg en vue de dessus c'est ce genre de choses :
À ne pas confondre avec des jeux de plateforme :
Je crois que des screens seront relativement explicites. Voici un jeu de gestion :
Pour la simulation c'est plus compliqué, pas sûr qu'on puisse appeler ça un jeu simple de toute façon.
Citer : Posté le 12/03/2016 22:34 | #
Si j'ai bien compris , la seul différence importante entre les RPG et les jeux de plateforme c'est le type de carte sinon on a dans le deux cas : des vies, des combats, des objets à collecter, des pièges ...
Par ailleurs je ne trouve pas ces jeux si simple que ça à première vue .
Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Citer : Posté le 12/03/2016 22:39 | #
Je trouve la différence entre les plateformes et les rpg fondamentale. Voici quelques exemples de ce que j'imagine :
→ Les plateformes sont axés sur le mouvement et les rpg sur le combat.
→ Les jeux de plateforme détaillent moins les statistiques des entités (rarement chiffrées).
→ Les objectifs des jeux de plateforme seront plutôt atteindre un point de l'espace alors que les quêtes des rpg sont plus variées.
→ Les jeux de plateforme intègrent régulièrement des compteurs de temps.
Il y en a d'autres mais je pense que c'est déjà pas mal.
Citer : Posté le 12/03/2016 22:42 | #
Merci beaucoup et je voulais savoir, qu'es ce qu'on entend exactement par "sources" d'un programme .
Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Citer : Posté le 12/03/2016 22:48 | #
Les sources, c'est le code. Lorsqu'on parle d'un langage compilé comme le C, on appelle le code « code source ». Et lorsqu'il s'agit d'un langage interprété comme le Python, on parle de « script ».
Dans les deux cas il s'agit du programme mais dans le second cas on est obligés de fournir les sources pour faire tourner le programme
Citer : Posté le 12/03/2016 22:52 | #
Ce fut assez intéressant, et c'est accessible pour ton niveau.
Je dois encore pouvoir trouver les sources quelque part si ça t’intéresse.
Donc il veut me donner son programme ?
Je croyais que les sources étaient le code sur lequel on se basait pour faire son propre programme mais je trouvais ça bizarre.
Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Citer : Posté le 12/03/2016 22:54 | #
Quand on parle des sources d'un programme, on fait référence au code du programme en lui même, et non aux "sources" telles qu'on l'entend dans le sens bibliographique
Citer : Posté le 12/03/2016 22:58 | #
Ok merci
Bon sinon, c'est le Space Invaders qui me paraît être le plus simple à réaliser dans un premier temps.
Ajouté le 13/03/2016 à 14:25 :
Ce fut assez intéressant, et c'est accessible pour ton niveau.
Je dois encore pouvoir trouver les sources quelque part si ça t’intéresse.
Xavier59, ta proposition m'intéresse toujours
Ajouté le 13/03/2016 à 19:11 :
J'ai fais des recherches sur les Space Invaders et je suis chaux
Mais malgré d'autres recherches je ne sais pas du tout par où commencer
Alors si vous avez des pistes je suis tout ouïe
Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Citer : Posté le 13/03/2016 19:13 | #
Commence par écrire les structures de données. Ensuite, l'affichage, et enfin la dynamique (les ennemis qui bougent). Ensuite le vaisseau du joueur, les missiles et les collisions, le score et le décorum.
Citer : Posté le 13/03/2016 19:55 | #
Structures de données
Heu je comprends pas vraiment
Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Citer : Posté le 13/03/2016 20:19 | #
En gros la manière dont tu va gérer le personnage, les ennemis, les missiles puis le décor. En gros quelles classes tu va créer, avec quoi dedans et quelles méthodes (fonctions).
Ensuite tu passes à l'affichage de ces structures, puis enfin à leur dynamique.
Citer : Posté le 13/03/2016 20:21 | #
Ok merci
Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Citer : Posté le 13/03/2016 20:25 | #
Sachant que pour l'affichage et la dynamique, il faudra rajouter des méthodes aux classes
Citer : Posté le 21/03/2016 22:08 | #
Voici le brouillon d'un jeu de la vie :
import tkinter
class Grille :
def __init__ (self) :
self.grille = []
for ligne in range(100) :
self.grille.append([])
for colonne in range(100) :
self.grille[ligne].append(0)
def generation (self, grille_2) :
for ligne in range(2,99) :
for colonne in range(2,99) :
i = 0
for X in [-1, 0, 1] :
for Y in [-1, 0, 1] :
if grille_2.grille[ligne+X][colonne+Y] == 1 :
i += 1
if i == 3 or (grille_2.grille[ligne][colonne] == 1 and i == 4) :
self.grille[ligne][colonne] = 1
class Interface :
def __init__ (self) :
self.fenetre = tkinter.Tk()
self.fenetre.title("Labyrinthe")
self.fenetre.geometry("700x615+1+1")
self.fenetre["bg"] = "blue"
self.canevas = tkinter.Canvas(self.fenetre, width = 600, height = 600, bg ='white')
self.canevas.grid(row =2, column =1, rowspan =30, columnspan =30, padx =5, pady =5)
self.boutton_valider = tkinter.Button(self.fenetre, text="Valider", fg="blue", width=10, command =jeu)
self.boutton_valider.grid(row =15, column =31, padx =5, pady =5)
def afficher (self, grille) :
self.canevas.delete(all)
for ligne in range(100) :
for collone in range(100) :
if grille.grille[ligne][collone] == 1 :
self.canevas.create_rectangle(2+4*ligne+2*ligne, 2+4*collone+2*collone, 6+4*ligne+2*ligne, 6+4*collone+2*collone, fill="black")
def jeu () :
global interface
grille_2 = Grille()
grille_2.grille[50][50] = 1
grille_2.grille[50][49] = 1
grille_2.grille[50][51] = 1
while 1 :
interface.afficher(grille_2)
grille_1 = Grille()
grille_1.generation(grille_2)
interface.afficher(grille_1)
grille_2 = Grille()
grille_2.generation(grille_1)
interface = Interface()
interface.fenetre.mainloop()
Mais l'affichage ne marche pas et je ne vois absolument pas pourquoi
Ajouté le 22/03/2016 à 20:14 :
Je fais de nombreux tests et c'est bien l'affichage qui bug :
self.canevas.delete(all)
for ligne in range(100) :
for collone in range(100) :
if grille.grille[ligne][collone] == 1 :
self.canevas.create_rectangle(2+4*ligne+2*ligne, 2+4*collone+2*collone, 6+4*ligne+2*ligne, 6+4*collone+2*collone, fill="black")
Cette ligne :
ne marche pas mais je ne vois pas pourquoi, car si je fais ça :
self.canevas.grid(row =1, column =1, rowspan =30, columnspan =30, padx =5, pady =5)
for ligne in range(100) :
for collone in range(100) :
self.canevas.create_rectangle(2+4*ligne+2*ligne, 2+4*collone+2*collone, 6+4*ligne+2*ligne, 6+4*collone+2*collone, fill="black")
j'ai bien un quadrillage.
Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Citer : Posté le 23/03/2016 18:45 | #
Juste au passage on écrit 'colonne'.
Es-tu sûr que grille.grille représente bien ce que tu veux ? À vue de nez, à moins qu'il y a une subtilité de tkinter, pas trop de raison que le quadrillage ne s'affiche pas. T'a tenté de modifier la condition sur la grille ou simplement de la supprimer ?
Citer : Posté le 30/03/2016 14:34 | #
Sinon, je pense que je ne peux pas accéder au canevas après avoir mis l'interface en route (interface.fenetre.mainloop()) mais je ne comprends pas pourquoi
Ajouté le 30/03/2016 à 17:37 :
Pourtant ceci (que j'ai récupéré sur internet) marche :
import random
def Cercle():
""" Dessine un cercle de centre (x,y) et de rayon r """
x = random.randint(0,Largeur)
y = random.randint(0,Hauteur)
r = 20
Canevas.create_oval(x-r, y-r, x+r, y+r, outline='blue', fill='blue')
def Effacer():
""" Efface la zone graphique """
Canevas.delete(ALL)
# Création de la fenêtre principale (main window)
Mafenetre = Tk()
Mafenetre.title('Cercle')
# Création d'un widget Canvas (zone graphique)
Largeur = 480
Hauteur = 320
Canevas = Canvas(Mafenetre, width = Largeur, height =Hauteur, bg ='white')
Canevas.pack(padx =5, pady =5)
# Création d'un widget Button (bouton Go)
BoutonGo = Button(Mafenetre, text ='Go', command = Cercle)
BoutonGo.pack(side = LEFT, padx = 10, pady = 10)
# Création d'un widget Button (bouton Effacer)
BoutonEffacer = Button(Mafenetre, text ='Effacer', command = Effacer)
BoutonEffacer.pack(side = LEFT, padx = 5, pady = 5)
# Création d'un widget Button (bouton Quitter)
BoutonQuitter = Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy)
BoutonQuitter.pack(side = LEFT, padx = 5, pady = 5)
Mafenetre.mainloop()
Ça donne :
Ajouté le 31/03/2016 à 18:49 :
Après avoir réalisé plusieurs tests :aie2: :
Mettre ceci à différents endroits dans le code (avant et après le "interface.fenetre.mainloop()") :
for collone in range(100) :
self.canevas.create_rectangle(2+4*ligne+2*ligne, 2+4*collone+2*collone, 6+4*ligne+2*ligne, 6+4*collone+2*collone, fill="black")
Faire de "interface.canevas" un objet global :
canevas.grid(row =1, column =1, rowspan =30, columnspan =30, padx =5, pady =5)
Je suis persuadé que je peux afficher quelque chose dans le canevas seulement avant de mettre l'interface en mode réception (interface.fenetre.mainloop()) mais je ne devrai pas avoir ce problème, comme le démontre le programme du message précédent.
Alors je suis ouvert à vos conseilles car je ne vois pas du tout ce que je peux faire .
Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Citer : Posté le 01/04/2016 13:22 | #
Ta structure est bizarre. J'ai modifié le code au profit d'une étape par clic sur le bouton.
J'ai remplacé la fonction jeu() par time() qui fait avancer le plateau d'une génération, et modifié un peu le code principal pour gérer la grille. À part ça je n'ai modifié que l'argument command dans le constructeur du bouton Valider, et j'arrive à obtenir quelque chose de correct.
Juste deux choses : j'aurais du avoir un 'u' à l'endroit mais il est tourné de 90°, vérifie ta fonction d'affichage. De plus, la méthode 'generation' de la grille ne respecte visiblement pas les règles du jeu (ou alors c'est l'instruction 'grille = g', faudra voir)
Voilà mon code :
import tkinter
class Grille :
def __init__ (self) :
self.grille = []
for ligne in range(100) :
self.grille.append([])
for colonne in range(100) :
self.grille[ligne].append(0)
def generation (self, grille_2) :
for ligne in range(2,99) :
for colonne in range(2,99) :
i = 0
for X in [-1, 0, 1] :
for Y in [-1, 0, 1] :
if grille_2.grille[ligne+X][colonne+Y] == 1 :
i += 1
if i == 3 or (grille_2.grille[ligne][colonne] == 1 and i == 4) :
self.grille[ligne][colonne] = 1
class Interface :
def __init__ (self) :
self.fenetre = tkinter.Tk()
self.fenetre.title("Labyrinthe")
self.fenetre.geometry("700x615+1+1")
self.fenetre["bg"] = "blue"
self.canevas = tkinter.Canvas(self.fenetre, width = 600, height = 600, bg ='white')
self.canevas.grid(row =2, column =1, rowspan =30, columnspan =30, padx =5, pady =5)
self.boutton_valider = tkinter.Button(self.fenetre, text="Valider", fg="blue", width=10, command =time)
self.boutton_valider.grid(row =15, column =31, padx =5, pady =5)
def afficher (self, grille) :
self.canevas.delete(all)
for ligne in range(100) :
for collone in range(100) :
if grille.grille[ligne][collone] == 1 :
self.canevas.create_rectangle(2+4*ligne+2*ligne, 2+4*collone+2*collone, 6+4*ligne+2*ligne, 6+4*collone+2*collone, fill="black")
def time ():
global grille
g = Grille()
g.generation(grille)
grille = g
interface.afficher(grille)
global grille
grille = Grille()
for x, y in [(49, 49), (49, 50), (49, 51), (50, 51), (51, 51), (51, 50), (51, 49)]:
grille.grille[y][x] = 1
interface = Interface()
interface.afficher(grille)
interface.fenetre.mainloop()
Citer : Posté le 01/04/2016 17:19 | #
Sinon, merci beaucoup pour ton aide
Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Citer : Posté le 01/04/2016 17:52 | #
Oui, j'ai modifié le programme en local pour le rendre plus souple (je l'ai bien amélioré aussi), et j'avais le même problème.