Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Mes questions en Python.
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Mes questions en Python.

Posté le 14/02/2016 18:23

Bonjours, je voudrai savoir si il est possible de faire ça :
nb_poisson [blue]=[/blue] [red]10[/red]
    [blue]for[/blue] i [blue]in[/blue] nb_poisson [blue]:[/blue]
    poisson[blue]+[/blue]str[blue]([/blue]i[blue])[/blue] [blue]=[/blue] [red]25[/red]



Précédente 1, 2, 3 ··· 5, 6, 7, 8, 9, 10, 11 Suivante
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

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...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 12/03/2016 19:18 | #


Merci DS
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...
Je ne m'y connais pas trop en jeu vidéo, j'ai réussi à me faire une idée sur la définition des Space Invader, jeux de stratégie de plateau, jeux de plateforme, petits rpg en vue de dessus (quoi que je n'ai pas trop compris la différence entre les rpg et les jeux de plateforme à par que "l'angle de vue" est différent), mais en revanche je ne vois pas ce que tu entends par "de la gestion simple, voire un peu de simulation..."
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

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 .
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

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 .
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

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
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 12/03/2016 22:52 | #


L'année dernière, à l'occasion de mon projet d'info, j'ai réalisé un Space Invaders.
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.
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Dark storm En ligne Labélisateur Points: 11634 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

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 :
L'année dernière, à l'occasion de mon projet d'info, j'ai réalisé un Space Invaders.
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
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 13/03/2016 19:55 | #


Structures de données
Heu je comprends pas vraiment
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Dark storm En ligne Labélisateur Points: 11634 Défis: 176 Message

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.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 13/03/2016 20:21 | #


Ok merci
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Dark storm En ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 13/03/2016 20:25 | #


Sachant que pour l'affichage et la dynamique, il faudra rajouter des méthodes aux classes
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 21/03/2016 22:08 | #


Voici le brouillon d'un jeu de la vie :
import os
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 :
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")

Cette ligne :
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")

ne marche pas mais je ne vois pas pourquoi, car si je fais ça :
self.canevas = tkinter.Canvas(self.fenetre, width = 600, height = 600, bg ='white')
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.
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

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 ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 30/03/2016 14:34 | #


Juste au passage on écrit 'colonne'.


Es-tu sûr que grille.grille représente bien ce que tu veux ?
Oui.

T'a tenté de modifier la condition sur la grille ou simplement de la supprimer ?
Oui, j'ai fait différents tests cette condition marche.

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 marche juste après avoir initialisé le canevas mais ce n'est pas le cas de celle_ci
self.canevas.delete(all)
J'ai essayé différentes syntaxes mais sans succès

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 :
from tkinter import *
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 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")

Faire de "interface.canevas" un objet global :
canevas = tkinter.Canvas(interface.fenetre, width = 600, height = 600, bg ='white')
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 .
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

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 os
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()

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 01/04/2016 17:19 | #


j'aurais du avoir un 'u' à l'endroit mais il est tourné de 90°, vérifie ta fonction d'affichage.
C'est réglé j'ai remplacé
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")
Par
self.canevas.create_rectangle(2+4*collone+2*collone, 2+4*ligne+2*ligne, 6+4*collone+2*collone, 6+4*ligne+2*ligne, fill="black")


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)
Je pense plutôt que c'est l'instruction
self.canevas.delete(all)
qui ne marche pas mais je ne vois pas pourquoi

Sinon, merci beaucoup pour ton aide
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Précédente 1, 2, 3 ··· 5, 6, 7, 8, 9, 10, 11 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 82 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