
|
|
Auteur
|
Message
|
1
|
|
|
|
Bonjour
Voila , je dois faire un programme pour un jeu de bataille navale en turbo pascal , mais je n'arrive pas generer des grilles .
Quelqu'un aurait il une solution ?
|
|
|
|
|
Salut!
Tu peux t'inspirer du programme que j'ai donné sur ce post http://forum.telecharger.01net.com/telecharger/programmation_et_developpement(...)
Comme il est écrit en C, il faut l'adapter à Pascal.
@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
je suis désolé , mais je ne comprends absolument rien .
|
|
|
|
|
Poste le code que tu as écrit.
@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
le code ?
je ne sais pas faire de programme puisque je n'arrive déja pas a faire un tableau .
Je ne vois pas ce que tu veux dire ...
|
|
|
|
|
Salut!
Ton programme est d'abord écrit sous forme de code source (commençant en général par uses crt;...), qui sera ensuite compilé. C'est ce code que je te demande de poster, pour voir ce que tu as déjà fait, et où tu pourrais avoir des problèmes. Evidemment, si tu attends qu'on te fasse ton programme, tu ne dois pas avoir de code source.
@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
Ah ok , désolé je n'avais pas compris .
Voila :
Pour faire les 2 tableaux j'avais commencé par ca :
program bateaux ;
uses crt ;
var tab1 : array [1..10] OF integer ;
tab2 : array [1..10]OF word ;
i:integer;
Begin
for i:=1 to 10 do
Begin
tab1:=1;
write(i);
tab2:=1;
write(i);
end;
Voila , je pensais qu'a partir de la mon tableau aller s'afficher avec control f9 , mais il n'apparait que des chiffres .
|
|
|
|
|
PHENIXghost a écrit :
program bateaux ;
uses crt ;
var tab1 : array [1..10] OF integer ;
tab2 : array [1..10]OF word ;
i:integer;
Begin
for i:=1 to 10 do
Begin
tab1[ i ]:=1;
write(i);
tab2[ i ]:=1;
write(i);
end;
Il y a déjà une petite chose qui me paraît bizarre : normalement, les grilles sont à deux dimensions, donc tu devrait déclarer tes deux tableaux de cette manière :
var tab1 : array [1..10, 1..10] OF integer ;
var tab2 : array [1..10, 1..10] OF integer ;
et quand tu les remplis avec les 1, il te faut une boucle imbriquée :
begin
for i:=1 to 10 do
for j:=1 to 10 do
begin
tab1[i,j]:=1;
write(i, ' ', j);
tab2[i,j]:=1;
write(i, ' ', j);
end;
end;
Pour t'aider, consulte ce site http://cyberzoide.developpez.com/info/turbo/chap21.php3.
@+
-->Message édité par Minus-et-Cortex le 03/01/2007 12:53:41<--
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
je ne comprend pas , j'ai toujours des chiffres qui apparaissent mais je n'ais pas de tableau .
|
|
|
|
|
Pour afficher un tableau, il faut faire :
for i:=1 to 10 do
begin
for j:=1 to 10 do
write(tab1[i,j]);
writeln();
end;
@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
Bonsoir , j'ai quelque chose qui ressemble a un tableau mais ce sont des 0 a la place des cases , c'est normal ?
Maintenant , j'ai un deuxième problème , pour le touché-coulé , il faut 2 tableaux avec des colonnes de 1 a 10 mais aussi des ligne de A a J , est ce que c'est possible de realiser ca ?
Et est ce que c'est possible d'avoir les 2 tableaux en meme temps ?
|
|
|
|
|
Sur le lien que je t'ai envoyé (http://cyberzoide.developpez.com/info/turbo/chap21.php3), on dit que pour faire un tableau à double entrée, il faut l'écrire
tableau[MinDim1..MaxDim1, MinDim2..MaxDim2]
On te dit également que les indices des tableaux peuvent être des lettres ('A'..'Z' ou 'a'..'z'). Tu peux donc faire un truc genre
var tab1[1..10, 'A'..'J'];
var tab2[1..10, 'A'..'J'];
pour déclarer tes deux tableaux.
@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
je vais te paraitre vraiment nul , mais j'y arrive toujours pas .
J'ai toujours des 0 mais je n'ai pas de cases .
je te remet mon programme pour les tableaux , parce que la je nage .
en tout cas merci pour ton aide ;
program bateau ;
uses crt;
var tab1 : array [1..10 , 'a'..'j'] Of integer;
tab2 :array [1..10,'a'..'j']Of integer;
i:integer;
j:integer;
Begin
for i:=1 to 10 do
Begin
for j:=1 to 10 do
write (tab1);
writeln(i);
for i:=1 to 10 do
Begin
for j :=1 to 10 do
write(tab2);
writeln(i);
end;
end;
end.
-->Message édité par PHENIXghost le 03/01/2007 22:43:19<--
|
|
|
|
|
|
program bateau ;
uses crt;
(* déclaration des deux tableaux correspondant aux grilles *)
var tab1 : array [1..10 , 'a'..'j'] of integer;
var tab2 :array [1..10, 'a'..'j'] of integer;
i:integer;
j:integer;
(* début du programme *)
BEGIN
for i:=1 to 10 do (* pour chaque ligne du tableau *)
for j:=1 to 10 do (*pour chaque colonne du tableau *)
begin
(* initialisation des cases de chaque tableau avec la valeur 1 *)
tab1[i, 'a'-1+j]:=1;
tab2[i, 'a'-1+j]:=1;
end;
(* chaque case des deux tableaux est initialisée avec la valeur 1 *)
(* affichage du contenu des cases du premier tableau *)
writeln('Affichage du premier tableau');
for i:=1 to 10 do
begin
(* on affiche une ligne *)
for j:=1 to 10 do
write (tab1[i, 'a'-1+j], ' ');
(* on affiche un retour à la ligne pour passer à la ligne suivante *)
writeln();
end;
writeln();
writeln();
(* affichage du contenu des cases du deuxième tableau *)
writeln('Affichage du deuxième tableau');
for i:=1 to 10 do
begin
(* on affiche une ligne *)
for j:=1 to 10 do
write (tab2[i, 'a'-1+j], ' ');
(* on affiche un retour à la ligne pour passer à la ligne suivante *)
writeln();
end;
END.
Ce programme devrait t'afficher le contenu des deux tableaux (donc des chiffres 1 séparés par deux espaces), mais ne t'affiche pas de 'grille'. Pour afficher les bords d'une grille, il faut les dessiner, et ce n'est à priori pas le principal. Tant que ton programme affiche le contenu correct des tableaux, c'est bon.
Tu devrais voir quelque chose comme
Affichage du premier tableau
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
Affichage du deuxième tableau
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
Bonjour ,
pour le programme , il me met une erreur 26 : type mismatch au niveau du premier + .
Que faut il faire ? c'est une erreur de type ?
|
|
|
|
|
Salut!
Essaye en remplaçant 'a'-1+j par chr(ord('a')-1+j). Il semble que Pascal n'aime pas additionner des lettres et des entiers.
@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
Maintenant , j'ai un tableau , mais je n'ais toujours pas les lettres .
Dans les () du writeln , il ne faut rien mettre ?
|
|
|
|
|
|
Modifie chaque bout de code affichant les tableaux for i:=1 to 10 do
begin
(* on affiche une ligne *)
for j:=1 to 10 do
write (tab1[i, 'a'-1+j], ' ');
(* on affiche un retour à la ligne pour passer à la ligne suivante *)
writeln();
end;
comme suit
write(' ');
for i:=1 to 10 do
write(i, ' ');
writeln();
for i:=1 to 10 do
begin
(* on affiche une ligne *)
write(chr(ord('A')-1+i),' ');
for j:=1 to 10 do
write (tab1[i, 'a'-1+j], ' ');
(* on affiche un retour à la ligne pour passer à la ligne suivante *)
writeln();
end;
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
Voila j'ai quelque chose qui ressemble a un tableau ,
mais il reste quelques problème :
123456789101010
a11111111111
b11111111112
c11111111113
d11111111114
e11111111115
f11111111116
g11111111117
h11111111118
i11111111119
j111111111110
10
1234567891010
a11111111111
b11111111112
c11111111113
d11111111114
e11111111115
f11111111116
g11111111117
h11111111118
i11111111119
j111111111110
Voila j'ai mis les problème en gras , par exemple , le 1 doit commencé a la première ligne , mais la il commence au dessus de a .
En tout cas , je te remercie parce que la je ne m'en sors plus du tout
|
|
|
|
|
C'est ton code ou celui que je t'ai écrit ? Si c'est le tien, poste-le.
@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
en fait c'est celui que j'avais fait au départ mais avec les modifications que tu m'a dit d'apportée a mon programme .
je vais quand meme te le reecrire :
program bateau ;
uses crt;
var tab1:array [1..10,'a'..'j'] of integer;
tab2 : array [1..10,'a'..'j']of integer;
i:integer;
j:integer;
Begin
for i := 1 to 10 do
for j:=1 to 10 do
Begin
tab1[i,chr(ord('a')-1+j)]:=1
tab2[i,chr(ord('a')-1+j)]:=1;
end;
writeln('');
for i:=1 to 10 do
write(i,'');
writeln(i);
for i:=1 to 10 do
Begin
write(chr(ord('a')-1+j)],'');
writeln(i);
end;
writeln(i);
writeln('')
for i:= 1 to 10 do
write(i,'');
writeln(i);
for i:= 1 to 10 do
Begin
write(chr(ord('a')-1+j)],'');
writeln(i);
end;
end.
en faisant ca ,j'obtient le tableau ci dessus pour le joueur 1.
Est t'il possible de faire la meme chose pour le joueur 2 mais sans que le joueur 1 voit les tableaux du joueur 2 ?
-->Message édité par PHENIXghost le 04/01/2007 17:31:44<--
|
|
|
|
|
Essaye en remplaçant les 'writeln(i);' par 'writeln();'. Pour ce qui est d'afficher le contenu de l'autre tableau, il faut faire la même chose ; mais pour éviter de dupliquer le code, il faudrait que tu fasses une procédure qui affiche un tableau, et dans ton code principal, tu appelles cette procédure une première fois avec le premier tableau et une deuxième fois avec le deuxième tableau.
Concernant le fait de voir les deux tableaux, le mieux est de faire un programme qui fonctionne en client/serveur et attend deux joueurs pour commencer à jouer. Chaque joueur verrait uniquement sa grille et pas l'autre. Mais ça me semble un peut trop compliqué pour toi, donc il faudra faire sans.
@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
Sans le i dans les () du writeln , il me met :error 42 :error in expression .
Je crois que pour le client/seveur tu as raison , sa me semble un peu compliqué .
J'ai une autre question ( et oui encore ) , je vroudrais savoir comment mettre un bateau dans le tableau ?
|
|
|
|
|
Si writeln(); ne fonctionne pas, essaye writeln('');.
Pour entrer des bateaux, il faut lire les coordonnées du bateau et modifier les tableaux correspondant aux grilles.
@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
Magnifique .
j'ai deux tableaux identiques et bon , mais je n'ais pas compris comment faire deux autres tableaux identique pour le joueur 2 ?
|
|
|
|
|
Je ne sais pas à quoi te servais ces deux tableaux (je pensais qu'il y en avait un pour le premier joueur et un autre pour l'autre joueur), mais si tu refais la même chose que pour ce joueur, tu auras deux autres tableaux pour le deuxième joueur.
@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
ok mais quand je recopie la meme chose , je n'ais toujours que deux tableaux .
-->Message édité par PHENIXghost le 05/01/2007 00:18:39<--
|
|
|
|
|
Salut!
program bateau ;
uses crt;
type grille = array [1..10,'a'..'j'] of integer;
procedure AfficheTab ( tableau : grille );
var i,j:integer;
begin
write(' ');
for i:=1 to 10 do
write(i, ' ');
writeln('');
for i:=1 to 10 do
begin
write(chr(ord('a')-1+i), ' ');
for j:=1 to 10 do
write(tableau[i, chr(ord('a')-1+j)], ' ');
writeln('');
end;
end;
var tab1: grille;
tab2 : grille;
tab3: grille;
tab4: grille;
i:integer;
j:integer;
Begin
for i := 1 to 10 do
for j:=1 to 10 do
Begin
tab1[i,chr(ord('a')-1+j)]:=1;
tab2[i,chr(ord('a')-1+j)]:=1;
tab3[i,chr(ord('a')-1+j)]:=1;
tab4[i,chr(ord('a')-1+j)]:=1;
end;
writeln(chr(10), chr(13), 'Premiere grille');
AfficheTab(tab1);
writeln(chr(10), chr(13), 'Deuxieme grille');
AfficheTab(tab2);
writeln(chr(10), chr(13), 'Troisieme grille');
AfficheTab(tab3);
writeln(chr(10), chr(13), 'Quatrieme grille');
AfficheTab(tab4);
end.
Voilà 4 grilles qui sont affichées (mais il se peut que tu n'en voies que deux, mais je ne sais pas pourquoi, cela doit venir de Turbo Pascal).
@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
ok , merci pour ton aide .
a+
|
|
1
|
|

|
Droppix Recorder
 |
Gravez facilement vos fichiers.
Une suite logicielle extrêmement simple qui répond à tous
vos besoins de gravure sur CD, DVD ou Bluray.
|




|