un rectangle blanc je suppose...Envoyé par charly
un rectangle blanc je suppose...Envoyé par charly
Comment rejoindre la rédaction de www.developpez.com ?
Améliorer vos posts en faisant une correction orthographique
"Tu as tort d'abuser de ma patience" Sokar
hum ... un rectangle de la couleur du fond de ton ecran ...
6*8 =42
Comme je le disais tantôt, j'ai "presque" terminé le jeu en version graphique. C'est vrai qu'il subsiste encore...
Sinon voici des adresses où vous pourrez trouver l'exécutable et le source.
http://fow-clan.150m.com/Download/Snake.exe
http://fow-clan.150m.com/Download/My_SNAKE.PAS
J'espère que j'aurai le max d'avis là dessus.
Comment rejoindre la rédaction de www.developpez.com ?
Améliorer vos posts en faisant une correction orthographique
"Tu as tort d'abuser de ma patience" Sokar
Je ne pourrais pas donner mon avis avant d'avoir testé le prog (Il ne marche pas ton lien )
Bon, en fait c'était un ancien site que j'avais fait et apparemment l'hébergeur est instable. Parce que tout à l'heure j'ai essayé et le lien a marché, quoi qu'il en soit, que de créer un nouveau site (ce qui serait du pur gaspillage), je préfère ( ) vous envoyer cà en tant que texte...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399 program version2; uses crt,graph; type Coord = record x1 : integer; y1 : integer; x2 : integer; y2 : integer; end; Cell = array [1..50] of Coord; procedure Init(var cellule : Cell;length : integer); var i : integer; begin cellule[1].x1 := 300; cellule[1].y1 := 300; cellule[1].x2 := 310; cellule[1].y2 := 310; for i:= 1 to (length-1) do begin cellule[i+1].x1 := cellule[i].x2; cellule[i+1].y1 := cellule[i].y1; cellule[i+1].x2 := cellule[i].x2 + 10; cellule[i+1].y2 := cellule[i].y2; end; end; procedure Show(cellule : Cell;length : integer); var i : integer; begin for i:= 1 to length do bar(cellule[i].x1,cellule[i].y1,cellule[i].x2,cellule[i].y2); end; procedure Mouv(var cellule : Cell;length : integer;var newdirection : char;var olddirection : char); var i:integer; begin if ((newdirection <> chr(49)) and (newdirection <> chr(50)) and (newdirection <> chr(51)) and (newdirection <> chr(53)) and (newdirection <> chr(27))) then newdirection := olddirection; case newdirection of chr(49) : begin if (olddirection = chr(51)) then begin newdirection := olddirection; Mouv(cellule,length,olddirection,olddirection); end else begin for i:= 1 to (length-1) do begin cellule[i] := cellule[i+1]; end; cellule[i+1].x1 := cellule[i].x1 - 10; cellule[i+1].x2 := cellule[i].x1; end; end ; chr(51) : begin if (olddirection = chr(49)) then begin newdirection := olddirection; Mouv(cellule,length,olddirection,olddirection); end else begin for i:= 1 to (length-1) do begin cellule[i] := cellule[i+1]; end; cellule[i+1].x1 := cellule[i].x2; cellule[i+1].x2 := cellule[i].x2 + 10; end; end; chr(53) : begin if (olddirection = chr(50)) then begin newdirection := olddirection; Mouv(cellule,length,olddirection,olddirection); end else begin for i:= 1 to (length-1) do begin cellule[i] := cellule[i+1]; end; cellule[i+1].y1 := cellule[i].y1 - 10; cellule[i+1].y2 := cellule[i].y1; end; end; chr(50) : begin if (olddirection = chr(53)) then begin newdirection := olddirection; Mouv(cellule,length,olddirection,olddirection); end else begin for i:= 1 to (length-1) do begin cellule[i] := cellule[i+1]; end; cellule[i+1].y1 := cellule[i].y2; cellule[i+1].y2 := cellule[i].y2 + 10; end; end; chr(27) : Halt(1); end; (* else begin*) Sound(666); delay(10); Nosound; { end}; olddirection := newdirection; if keypressed then newdirection := readkey; end; procedure nombre(var val1 : integer;var val2 : integer); begin randomize; val1 := random(GetMaxX-1); val2 := random(GetMaxY-1); end; function collision(cellule : Cell;val1,val2 : integer;length : integer) : boolean; begin if ((val1 <= (cellule[length].x2)) and (val1 >= (cellule[length].x1)) and (val2 <= (cellule[length].y2+1)) and (val2 >= (cellule[length].y1-1))) then collision := true else collision := false; end; function hittail(cellule : cell;length : integer) : boolean; var i : integer; begin for i:=1 to length-1 do begin if ((cellule[length].x1=cellule[i].x1) and (cellule[length].y1=cellule[i].y1) and (cellule[length].x2=cellule[i].x2) and (cellule[length].y2=cellule[i].y2)) then begin hittail:=true; break; end else begin hittail := false; end; end; end; function hitwall(cellule : Cell;length : integer) : boolean; begin if((cellule[length].x2 < 1) or (cellule[length].x2 > (GetMaxX+1)) or (cellule[length].y2 < 1) or (cellule[length].y2 > (GetMaxY+1))) then hitwall := true else hitwall := false; end; procedure update(var cellule : Cell;length : integer; decalage : integer); var i : integer; j : integer; begin for i:= (length+decalage) downto (decalage + 1) do begin cellule[i] := cellule[i-decalage]; end; j:=decalage; while (j>=1) do begin cellule[j].x1 := cellule[i].x1 - 10; cellule[j].y1 := cellule[i].y1; cellule[j].x2 := cellule[i].x1; cellule[j].y2 := cellule[i].y2; i:=i-1; j:=j-1; end; end; var gDetect, gMode : integer; cellule : Cell; dir1 : char; dir2 : char; val1, val2 : integer; valeur: char; life : integer; length : integer; decalage : integer; i : integer; vitesse : integer; name : string; rep : char; tps : integer; begin clrscr; gotoxy(15,10); Writeln('Ce jeu a ete programme par King Kaiser'); gotoxy(15,12); writeln('A n''importe quel moment, tapez Echap pour quitter le jeu'); gotoxy(15,14); writeln('Utilisez les touches 5,1,2, et 3 pour vos deplacements!'); delay (2500); repeat clrscr; gotoxy(20,10); writeln('Entrez votre nom : '); gotoxy(40,10); readln(name); gotoxy(20,12); writeln('Entrez la vitesse du jeu : '); gotoxy(20,13); writeln('Attention : entrez une valeur inferieure 200Km/h'); gotoxy(20,14); writeln('Pour eviter de faire des accidents!'); gotoxy(48,12); readln(vitesse); while((vitesse >= 190) or (vitesse <= 0)) do begin if (vitesse >= 200) then begin gotoxy(20,15); writeln('Vous etes presses de mourir? '); end; if (vitesse <= 0) then begin gotoxy(20,15); writeln('Pas de vitesse negative ou nulle!'); end; gotoxy(20,16); writeln('Entrez une vitesse censee : '); gotoxy(49,16); readln(vitesse); end; gotoxy(2,19); Writeln('Vous possedez 3 vies donc eviter de cogner le mur ou vous meme plus de 3 fois!'); delay(1500); clrscr; gotoxy(25,10); Writeln('Chargement en cours...'); for i:=20 to 50 do begin gotoxy(i,15); writeln(chr(219)); delay(300); gotoxy(35,18); writeln(i*100/50:0:0, '%'); end; gotoxy(25,10); writeln('Chargement termine!!!'); gotoxy(25,12); writeln('Lancement du jeu...'); delay(2000); gDetect := Detect; InitGraph(gDetect,gMode,'c:\tp\bgi'); ClearDevice; length := 5; Init(cellule,length); Show(cellule,length); nombre(val1,val2); dir1 := chr(51); dir2 := chr(51); valeur := '1'; life := 3; decalage := 0; repeat delay(trunc(abs(1000/vitesse+30))); Mouv(cellule,length,dir1,dir2); if(collision(cellule,val1,val2,length)) then begin nombre(val1,val2); valeur := succ(valeur); sound(250); delay(100); nosound; decalage := decalage + 1; length := length + decalage - 1; update(cellule,length,decalage); end; ClearDevice; Rectangle(1,1,GetMaxX,GetMaxY); Show(cellule,length); OutTextXY(val1,val2,valeur); if(hitwall(cellule,length)) then begin ClearDevice; length := 5; decalage := 0; Init(cellule,length); dir1 := chr(51); dir2 := dir1; delay(100); Mouv(cellule,length,dir1,dir2); rectangle(1,1,GetMaxX,GetMaxY); sound(50); delay(500); nosound; OutTextXY(250,200, 'Vous avez cogne le mur '); valeur := '1'; nombre(val1,val2); delay(1500); show(cellule,length); life := life -1; end; if(hittail(cellule,length)) then begin ClearDevice; length := 5; decalage := 0; Init(cellule,length); dir1 := chr(51); dir2 := dir1; delay(100); Mouv(cellule,length,dir1,dir2); rectangle(1,1,GetMaxX,GetMaxY); sound(50); delay(500); nosound; OutTextXY(235,200, 'Vous vous etes cognes! :) '); valeur := '1'; nombre(val1,val2); delay(1500); show(cellule,length); life := life -1; end; if (life = 0) then begin OutTextXY(260,220, 'Partie Terminee'); OutTextXY(260,220, 'Vous n''avez plus de vie'); break; end; until valeur >'9'; ClearDevice; Rectangle(1,1,GetMaxX,GetMaxY); repeat begin Setcolor(5); if (valeur =':') then OutTextXY(250,200,' Vous avez gagne ') else OutTextXY(250,200,' Vous avez perdu '); OutTextXY(180,220,'Appuyez sur une touche pour continuer'); delay (800); ClearDevice; SetColor(15); Rectangle(1,1,GetMaxX,GetMaxY); if (valeur = ':') then OutTextXY(250,200,' Vous avez gagne ') else OutTextXY(250,200,' Vous avez perdu '); OutTextXY(180,220,'Appuyez sur une touche pour continuer'); delay (800); end; until keypressed; CloseGraph; RestoreCrtMode; clrscr; gotoxy(10,3); write('Voulez vous recommencer? '); readln(rep); repeat case rep of 'o','O': begin gotoxy(10,6); writeln('Merci ',name,' de bien vouloir continuer. Patientez... '); delay(3000); end; 'n','N' : ; else begin gotoxy(10,6); write('Entrez ''o'' ou ''O'' pour Oui et ''n'' ou ''N'' pour Non! : '); readln(rep); end; end; until ((rep='o') or (rep='O') or (rep='n') or (rep='N')) until ((rep='n') or (rep='N')); end.
Comment rejoindre la rédaction de www.developpez.com ?
Améliorer vos posts en faisant une correction orthographique
"Tu as tort d'abuser de ma patience" Sokar
Dans le chemin du .bgi j'ai mis c:\tp\bgi (dans InitGraph()) donc l'éxécutable ne marchera pas dans les machines qui n'auront pas pas ce chemin là
Ce n'est pas possible de faire en sorte que quelque soit la machine, l'éxécutable détecte automatiquement la carte graphique et lance le jeu en conséquence?
Comment rejoindre la rédaction de www.developpez.com ?
Améliorer vos posts en faisant une correction orthographique
"Tu as tort d'abuser de ma patience" Sokar
J'ai rencontré un certain nombre de problèmes au cours de l'éxécution du jeu (à part l'initialisation du mode graphique).
Par exemple, par moment, un nombre n'apparaît pas à l'écran (cà arrive très rarement, mais arrive quand même).
Actuellement j'ai commencé déjà à le faire en mode texte. Cà semble un brin plus facile...
Comment rejoindre la rédaction de www.developpez.com ?
Améliorer vos posts en faisant une correction orthographique
"Tu as tort d'abuser de ma patience" Sokar
Voilà, un autre petit problème...
En mode graphique, faire une ligne ou un rectangle c'est assez simple, y'a des fonctions pour cà...
Mais en mode texte, on fait une ligne comment? J'ai cherché dans la bibliothèque crt une fonction qui peut faire cà mais...y'a rien!!!
J'ai pensé qu'au lieu de faire une ligne, on pourrait par eexmple afficher un caractère - chr(219) par exemple- et cette succession de caractères constituerai alors le "serpent"!
Néanmoins, j'ai bien compris qu'il faut en mode texte enregistrer toutes les données dans une matrice et afficher celle-ci au fur et à mesure...
Comment rejoindre la rédaction de www.developpez.com ?
Améliorer vos posts en faisant une correction orthographique
"Tu as tort d'abuser de ma patience" Sokar
Dans le jeu, tout à l'heure j'ai oublié de le mentionner, j'aimerais connaître les codes ascii des touches de direction du clavier.
J'ai écrit une petite procédure qui me renvoit le code ascii du caratère tapé, mais j'ai des valeurs erronées
Comment rejoindre la rédaction de www.developpez.com ?
Améliorer vos posts en faisant une correction orthographique
"Tu as tort d'abuser de ma patience" Sokar
Salut!
En ce qui concerne l'affichage du code des touches...
http://www.developpez.net/forums/viewtopic.php?t=74573
http://www.developpez.net/forums/viewtopic.php?t=86887
à+
De retour parmis vous après 10 ans!!
Merci!
Comment rejoindre la rédaction de www.developpez.com ?
Améliorer vos posts en faisant une correction orthographique
"Tu as tort d'abuser de ma patience" Sokar
Aucune réaction? :
Comment rejoindre la rédaction de www.developpez.com ?
Améliorer vos posts en faisant une correction orthographique
"Tu as tort d'abuser de ma patience" Sokar
A quel propos?
Tu as actualisé les fichiers des liens que tu nous as donné précédement?
Je vais regarder, et je te donnerai mon avis... à+
De retour parmis vous après 10 ans!!
Ben, l'éxé s'ouvre bien, le menu apparait, me demande mon nom, ensuite il ya le chargement, puis après, plus rien...
Je n'ai pas TP sous la main pour pouvoir le compiler, alors j'ai juste essayer l'éxé.
De toute façon, le plus difficile est de faire un programme qui marche sur toutes les configs!
-> P3 450, 128 ram, 4Go hdd, Voodoo 3 1000, XP pro.
Bon courage! à+
De retour parmis vous après 10 ans!!
Si ca marche pas chez toi Sub0, c'est peut-être à cause des fichiers BGI, qui doivent être situés dans c:\tp\bgi pour ce programme.
Petite astuce à ce sujet : si dans initgraph on met une chaîne vide pour le répertoire BGI, le programme regarde dans le répertoire courant, c'est-à-dire le répertoire où il a été lancé... Donc si les fichiers BGI sont dans le même répertoire que le fichier .exe et que
alors ca marche à tous les coups ! Ca évite d'imposer un répertoire pour les fichiers BGI ! Une autre solution consiste également à lier les fichiers BGI au programme directement, avec la directive {$L} ( mais je sais pas trop le faire )
Code : Sélectionner tout - Visualiser dans une fenêtre à part initgraph(GraphPilote,GraphMode,'');
En ce qui concerne les liens qui ne marchent pas, tu peux demander à quelqu'un d'héberger tes fichiers ( par exemple à un modérateur super sympa ), ou tu peux créer un site sur free ou lycos en 30 secondes !
a+
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal
Salut!
Attention, pour créer et utiliser un site hébergé chez Free, il faut attendre de
recevoir par la poste les identifiants de son compte!
Si c'est juste pour stocker des fichiers, Voilà.fr va super bien.
Si tu es intérressé pour intégrer le bgi dans l'éxé, je peux t'expliquer la manip, à+
De retour parmis vous après 10 ans!!
En effet, l'exec n'initialisera pas le mode graphique parce que le chemin du bgi est c:\tp\bgi donc s'il ne trouve pas ce repertoire, il vas générer une erreur!!!
D'autre part, je suis bien curieux de savoir comment générer un exécutable avec les bgi qui lui sont liés de manière qu'il pourra fonctionner sur n'importe quelle machine.
Et pour le site, je compte m'en faire un (pas seulement pour stocker snake.exe mais un peu plus consistant 8) , et j'ai trouvé quelques hébergeurs gratuit comme freesites.com ou même voila.fr)
Comment rejoindre la rédaction de www.developpez.com ?
Améliorer vos posts en faisant une correction orthographique
"Tu as tort d'abuser de ma patience" Sokar
Envoyé par King Kaiser
Je crois que c'est une bonne chose.Je te propose de faire la tete avec chr(219) █ et le reste avec chr(220) ▄▬
Ainsi ton serpent Ressemblera un peu a ca
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
A+
A la limite, tu peux faire la tête avec d'autres caractères comme des flèches ( #16, #17, #30 et #31)... Mais le mode texte est assez limité...
a+
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal
Si tu veux vraiment peaufiner ton graphisme tout en restant en mode texte, il est possible de dessiner toi-même des caractères (avec un jeu de 256 caractères comme l'ASCII, tu peux vraiment te défouler) !
J'ai déjà réalisé un jeu d'échecs avec cette méthode et cela donnait très bien. Si ça te tente...
Règles du forum
Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
Mes tutoriels et sources Pascal
Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager