Exercice simple de programmation en Python

a marqué ce sujet comme résolu.

Le réseau, c’est compliqué. Là, tu fais du deux joueurs temps réel sur la même machine, c’est moins compliqué, mais pas simple du tout pour autant. Ensuite, je t’invite à voir, pas à pas, ce que fait ton programme en suivant strictement les instructions que tu as écrite. Et à comparer à ce que tu veux faire.

+0 -0

En fait c’est en raiseau : ce qu’il faut faire c’est ça : Chaque joueur contrôle un carré. Le joueur 1 commence en x=56 et y=16, et le joueur 2 en x=72 et y=16. Le joueur 1 joue en premier, au tour numéro 0. Le joueur 2 joue ensuite au tour 1, puis le joueur 1 au tour 2, et ainsi de suite.

Créez une clé "tron1" pour transmettre vos déplacements à votre adversaire. Lui devra créer une clé "tron2" pour vous envoyer les siens. Vous programmez le joueur 1. Après son déplacement, écrivez sur votre clé une liste composée de 2 valeurs : le numéro du tour et la direction de déplacement (1 pour haut, 2 pour bas, 3 pour gauche, 4 pour droite).

Lisez ensuite toutes les 100ms sur la clé de votre adversaire, une liste de deux valeurs : un numéro de tour et une direction. Lorsque le numéro de tour lu est le suivant de celui que vous aviez écrit, déplacez le carré de votre adversaire de 2 pixels dans la direction lue. Ensuite, attendez 100ms de plus et passez au tour suivant, en gérant le déplacement suivant du joueur 1.

Salut, on aurait besoin de plus d’info et des infos claires.

Le réseau ne fonctionne pas vraiment comme ça. Tu as besoin d’une adresse IP et d’un port (on peut appeler ça une clé si on veut) pour communiquer (par exemple 10.0.0.11:1234, où 10.0.0.11 est l’IP et 1234 est le port, : sépare l’IP et le port). Tout expliquer serait compliquer et tu n’as pas vraiment besoin de le savoir je pense, surtout si ça ne t’intéresse pas.

Comment on t’as demander de gérer le réseau ? Tu utilises quoi ? Tu as forcément plus d’infos.

+0 -0

Concrètement, voici la consigne exacte :

Modifiez le programme de la version précédente pour qu’il permette à deux joueurs de jouer en réseau. Chaque joueur contrôle un carré. Le joueur 1 commence en x=56 et y=16, et le joueur 2 en x=72 et y=16. Le joueur 1 joue en premier, au tour numéro 0. Le joueur 2 joue ensuite au tour 1, puis le joueur 1 au tour 2, et ainsi de suite.

Créez une clé "tron1" pour transmettre vos déplacements à votre adversaire. Lui devra créer une clé "tron2" pour vous envoyer les siens. Vous programmez le joueur 1. Après son déplacement, écrivez sur votre clé une liste composée de 2 valeurs : le numéro du tour et la direction de déplacement (1 pour haut, 2 pour bas, 3 pour gauche, 4 pour droite).

Lisez ensuite toutes les 100ms sur la clé de votre adversaire, une liste de deux valeurs : un numéro de tour et une direction. Lorsque le numéro de tour lu est le suivant de celui que vous aviez écrit, déplacez le carré de votre adversaire de 2 pixels dans la direction lue. Ensuite, attendez 100ms de plus et passez au tour suivant, en gérant le déplacement suivant du joueur 1. Pour tester votre programme avec un véritable adversaire, celui qui est le joueur 2 devra bien sûr modifier son programme en conséquence.

Les fonctions disponibles pour contrôler le robot sont : drawRectangle(x0, y0, width, height) drawLine(x0, y0, x1, y1) isButtonPressed(button) retourne True si le bouton est enfoncé, False sinon sleep(milliseconds) met en pause l’exécution pendant une durée en ms connectToCloudStore(identifier, password) writeToCloudStore(identifier, key, value) readFromCloudStore(identifier, key)

Les mots-clés suivants sont autorisés : variables, list, set, crochets [ ], def, lambda, while, if, else, elif, and, or. Les mots-clés suivants sont interdits : for, not, accolades { }, break, continue, setattr, map, split. Les variables sont autorisées.

Ce sont toutes les informations que j’ai. Concrètement, j’écris mon programme sur le site qui propose l’exercice et il m’indique ensuite si celui-ci fonctionne.

Pour faire le programme, je vais me baser sur l’autre déjà fait :

from quickpi import *
Y=16
X=64
drawRectangle(X, Y, 2, 2)
while True:
    if isButtonPressed("stick1.up"):
        Y=Y-2
        drawRectangle(X, Y, 2, 2)
    elif isButtonPressed("stick1.down"):
        Y=Y+2
        drawRectangle(X, Y, 2, 2)
    elif isButtonPressed("stick1.left"):
        X=X-2
        drawRectangle(X, Y, 2, 2)
    elif isButtonPressed("stick1.right"):
        X=X+2
        drawRectangle(X, Y, 2, 2)
    sleep(100)

Je vais ensuite y faire les modifications nécessaires. Seulement, je ne suis pas sûr de comprendre bien l’énoncé et de savoir comment faire. Pour commencer, je ne sais même pas que sont ces variables là : connectToCloudStore(identifier, password) writeToCloudStore(identifier, key, value) readFromCloudStore(identifier, key)

surtout si ça ne t’intéresse pas. Source:ache

Si, ça m’intéresse vraiment de savoir faire tout ça ! Merci d’avance.

Finalement, j’ai réussi deux ou trois trucs:

from quickpi import *
Y=16
X=56
Tour=0
drawRectangle(X, Y, 2, 2)
while True:
    if isButtonPressed("stick1.up"):
        Y=Y-2
        drawRectangle(X, Y, 2, 2)
        Direction=1
    elif isButtonPressed("stick1.down"):
        Y=Y+2
        drawRectangle(X, Y, 2, 2)
        Direction=2
    elif isButtonPressed("stick1.left"):
        X=X-2
        drawRectangle(X, Y, 2, 2)
        Direction=3
    elif isButtonPressed("stick1.right"):
        X=X+2
        drawRectangle(X, Y, 2, 2)
        Direction=4
    sleep(200)
    Tour=Tour+1
    connectToCloudStore("l8A2PUAM", "MdpCaché")
    writeToCloudStore("l8A2PUAM", "tron1", "Tour + Direction")

Bien sûr ce n’est pas fini, je n’ai fait que le joueur 1 mais le problème c’est quand je me connecte à ma clé, la valeur que j’ai mise au début ne change pas. Est-ce un problème au niveau du code ?

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte