Précédent   Forum des professionnels en informatique > Autres langages > Pascal
Pascal Forum d'entraide sur la programmation en langage Pascal et sur les EDI. Avant de poster -> la F.A.Q Pascal, les cours
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/08/2011, 14h19   #1
Membre confirmé
 
Avatar de titeeee
 
Homme Titouan Créac'h
Lycéen
Inscription : mai 2009
Messages : 193
Détails du profil
Informations personnelles :
Nom : Homme Titouan Créac'h
Âge : 18
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2009
Messages : 193
Points : 257
Points : 257
Par défaut Défi Tetris : empêcher une pièce de pivoter hors des limites

Voilà j'ai un bug avec tetris que je n'arrive pas a résoudre. Je vais essayer d'expliquer sans en donner trop :=)

Code :
1
2
3
4
5
6
7
8
 
|        |
|     .  |
|     .  | 
|     .  |
|     .  |
|        |
+--------+
En gros ça represente le terrain de jeux et les points une barre vertical.
Quand j'appuie sur la touche du haut elle pivote et sort de l'écran et fais tout planter.
J'empeche les formes de bouger quand elles sont collées au bord, ce qui marche avec tout sauf la barre (trop grande ) . Donc si vous avez une solution merci
titeeee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 16h57   #2
Membre habitué
 
Avatar de joreveur
 
Homme
Développeur informatique
Inscription : janvier 2010
Messages : 142
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : janvier 2010
Messages : 142
Points : 127
Points : 127
Bonjour,


ah le tétris... tu en es deja là... moi je n'ai pas encore écris une seule ligne...

et si tu rajoutais un test quand c'est la grande barre ? si collée ou presque collée, tu empêches le déplacement...

à bientôt peut-être
joreveur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 17h12   #3
Membre confirmé
 
Avatar de titeeee
 
Homme Titouan Créac'h
Lycéen
Inscription : mai 2009
Messages : 193
Détails du profil
Informations personnelles :
Nom : Homme Titouan Créac'h
Âge : 18
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2009
Messages : 193
Points : 257
Points : 257
Oui j'y ai pensé mais le probleme, c'est que je vais rajouter au moins 10 lignes et que ça va faire un code sale. J'aurais préféré une méthode qui marche pour toute les formes. Mais si je trouve pas je vais faire comme ça...

merci
titeeee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 20h46   #4
Membre Expert
 
Homme
Étudiant
Inscription : juin 2009
Messages : 902
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France, Aveyron (Midi Pyrénées)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2009
Messages : 902
Points : 1 596
Points : 1 596
Salut

Le plus simple, tu tourne ta barre, et tu regarde si il y a chevauchement/dépassement. Si c'est le cas, tu annules le mouvement.
C'est valable pour n'importe quelle pièce.

Bonne chance
mick605 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 21h03   #5
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 3 406
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 42
Localisation : Réunion

Informations professionnelles :
Activité : Freelance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2002
Messages : 3 406
Points : 6 681
Points : 6 681
alors le plus simple pour éviter de "sortir" de l'écran dans ce genre de situation est d'ajouter une zone vide suffisamment grande autour de celui-ci.

exemple, je déplace un pion sur un damier de 9x9

type Damier=array[1..9,1..9] of Byte;.

si je veux tester que le point peut aller de (x, y) à (x + 1, y) il faut tester if (x + 1 < 9) and Damier[x + 1, y] = 0 then....

Pour éviter le teste sur la valeur de x, il suffit d'agrandir le damier

type Damier=array[0..10,0..10] of Byte; et de remplir les cases du bord par une valeur bloquante.
Code :
1
2
3
4
5
6
7
8
 
  for i := 0 to 10 do
  begin
    Damier[i, 0] := 255;
    Damier[i,10] := 255;
    Damier[0, i] := 255;
    Damier[10, i] := 255;
  end;
tu peux peut-être appliquer se principe sur ton Tetris en élargissant la grille de 4 cases qui sont toujours occupées.
__________________
Developpez.com: Mes articles
Entreprise: Execute SARL
Produits : UPnP, RemoteOffice sous Delphi
Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%
Paul TOTH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 31/08/2011, 15h33   #6
Membre confirmé
 
Avatar de titeeee
 
Homme Titouan Créac'h
Lycéen
Inscription : mai 2009
Messages : 193
Détails du profil
Informations personnelles :
Nom : Homme Titouan Créac'h
Âge : 18
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2009
Messages : 193
Points : 257
Points : 257
J'ai utilisé ça pour le bas du tableau, mais je vais aussi utilisé ça sur les bords. Merci !
titeeee est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h41.


 
 
 
 
Partenaires

Hébergement Web