steste a écrit : ↑01 août 2020 19:29[...]Ceci fait, je fais mon module d'affichage, qui devrait être rapide, vu que "tout les résultats sortent en même temps" !
[..]
Je n'ai pas bien compris de quel module d'affichage
steste parlait, mais cela m'a donné l'idée de faire une version un peu moins MPO qui décortique le fonctionnement de l'algorithme de Wansdorf par une animation graphique sur l'écran du PC-1360.
- MPO 91 Graphic Wansdorf on SHARP PC-1350.gif (210.92 Kio) Vu 4453 fois
Bon, le seul réel ennuis est que l'écran est petit et que donc chaque ca
fe fait exactement 4x4 pixels.
Les ca
fes claires et sombres dessinées correspondent aux cases non encore explorées ; en effet, cette nouvelle version n'a pas d'initialisation de l'échiquier autre que la mise à zéro de l'instruction DIM. Ceci évite d'avoir à attendre la fin de l'initialisation au début de programme, on saisi donc la positon initiale immédiatement. Juste le temps que l'échiquier vide se dessine.
(J'attends que
ledudu poste sa version pour TI-57 avant de donner mon code pour CASIO fx-602p qui lui aussi n'utilise pas d'autre initialisation qu'une remise à zéro des registre VAC).
Ensuite, les jetons sont représentés par un petit carré (de 2x2 pixels) au centre des ca
fes déjà parcourues par le cavalier.
La position du cavalier est donnée à chaque saut par un grand carré (faisant toute la ca
fe soit 4x4 pixels) et les positions sont données en clair sur la droite de l'écran. les touches curseur < et > permettent de naviguer dans la liste, on voit alors les sauts à rebrousse poil du cavalier.
La touche ENTER permet de déterminer le saut suivant et de sortir du programme après avoir parcouru tout l'échiquier.
Les cases explorées sont notées à l'aide de lentilles vertes biens sèches (des pixels bien collés) qui repèrent les degrés de liberté comme les faces d'un dé ( . / : / :. / :: / :.: / ::: / H ) avec le nombre 7 formant un petit H.
Les détermination du saut suivant sont animés, on voit les cases scrutées par la machine scintiller et afficher leur nouvel état. Le choix de saut suivant indiqué par un vidéo-inverse évolue "en direct".
Evidemment ces animations ralentissent un peu le calcul, mais on peut se passer placer les jetons et le s lentilles vertes bien sèches sur un échiquier.
Code : Tout sélectionner
1:CLEAR : WAIT .2: DIM S(64),E(63),D(7): FOR A=0 TO 3: READ D(A):D(4+A)=-D(A): NEXT A: CLS : GOSUB 39
2:CURSOR 6: INPUT "Initial POS ";P$: Q=8* VAL RIGHT$ (P$,1)- (ASC P$ AND 15): IF Q<0 OR Q>63 GOTO 2
3:FOR N=1 TO 64:P=Q,E(P)=N,S(N)=P,X=P AND 7,M=-9: GOSUB 40
4:FOR A=0 TO 7:I=P+D(A),Y=I AND 7,W=19: IF I>=0 IF I<64 IF ABS (Y-X)<3 GOTO 7-2* SGN E(I)
5:NEXT A: NEXT N: END
6:DATA 10,17,15,6
7:FOR B=0 TO 7: J=I+D(B),Z=J AND 7: IF J>=0 IF J<63 IF ABS (Y-Z)<3 IF E(J)<1 GOSUB 20:E(I)=E(I)-1: GOSUB W
8:NEXT B:E(I)=E(I)-1
9:E(I)=E(I)+1: GOSUB W: IF E(I)>M GSOUB 31:M=E(I),J=Q,Q=I: GOSUB 20
10:GOTO 5
19:J=I
20:U=28-4*(J AND 7),V=31-4* INT (J/8): GOSUB 30
21:IF E(J)<0 GOTO 39+E(J)
22:IF E(J)>0 LINE (1+U,V-1)-(2+U,V-2),S,BF : RETURN
23:IF U+V AND 4 LINE (U,V)-(U+3,V-3),&A5A5,BF
24:RETURN
30:LINE (U,V)-(U+3,V-3),R,BF:RETURN
31:LINE (U,V)-(U+3,V-3),X,BF: BEEP 1,98,2: RETURN
32:GOSUB 38
33:PSET (U,V-2): PSET (2+U,V-2):GOTO 35
34:PSET (1+U,V-2)
35:PSET (U,V-1): PSET (2+U,V-3):GOTO 37
36:PSET (2+U,V-3)
37:PSET (U,V-3): PSET (2+U,V-1): RETURN
38:PSET (1+U,V-2): RETURN
39:FOR J=0 TO 31 STEP 8: FOR I=7 TO 31 STEP 8: GCURSOR (J,I): GPRINT "A050A05000A050A05";: NEXT I:NEXT J: RETURN
40:A=N-8,B=N: CURSOR 92: PRINT N: BEEP 1: IF A<1 LET A=1
41:CURSOR 54: FOR I=A TO B:J=S(I): PRINT CHR$ (72-(J AND 7)); CHR$ (49+J/8);: NEXT I: GOSUB 20:W=0
42:GCURSOR (42,15): GPRINT "0000000000": IF A>1 GCURSOR (42,15): GPRINT "1038387C7C"
43:GCURSOR (143,15): GPRINT "0000000000": IF B<N GCURSOR (143,15): GPRINT "7C7C383810"
44:K= ASC INKEY$ :W=W+1: IF W GOSUB 20: GOSUB 31:W=-11
45:IF K<13 GOTO 14
46:GOSUB 31: IF K=15 IF A>1 LET A=A-1,B=B-1: GOTO 41
47:IF K=14 IF B<N LET A=A+1,B=B+1: GOTO 41
48:RETURN
Bon, c'est long à taper, heureusement je peux fournir à la demande une copie de ma session sous l'excellent PokEmul de
remy.