MO5 Kandy Krush Java

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Répondre
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

MO5 Kandy Krush Java

Message par Daniel »

Nouveau programme pour MO5 à tester :
mo5kandykrushjava.zip
(79.09 Kio) Téléchargé 238 fois
mo5kandykrushjava.png
mo5kandykrushjava.png (2.45 Kio) Consulté 7138 fois
Il vient de sortir, et il n'est pas encore testé. Si vous ne trouvez pas trop de bugs j'en ferai des versions disquette et carte sd et je l'ajouterai au site dcmoto.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: MO5 Kandy Krush Java

Message par __sam__ »

L'animation est très bien faite. Par contre au bout d'un moment j'ai beau cliquer entre deux bille horizontales, mais elles ne s'échangent plus. Comme je ne connais pas le jeu d'origine je ne sais pas si c'est un comportement normal, mais au final le jeu semble bloqué puisque je n'arrive plus à permuter aucune bille.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: MO5 Kandy Krush Java

Message par Daniel »

Non, ce n'est pas normal. Je n'ai jamais eu ce cas dans mes tests. Et surtout je ne sais pas comment faire pour le reproduire et l'analyser.

[Edit]
La partie se joue en 32 coups. Après le 32e coup on ne peut plus cliquer, c'est peut-être ça le problème ?
Il faut appuyer sur une touche pour commencer une nouvelle partie, c'est écrit en bas à gauche de l'écran.
Dans la prochaine version j'ajouterai un message bien visible pour indiquer la fin de partie.
[/Edit]


Le programme a été écrit très vite (en deux jours), il est encore très brouillon et pas du tout optimisé, mais pour un jeu de réflexion la vitesse n'est pas primordiale. Voici le code :

Code : Tout sélectionner

/**************************************************\
*             MO5 KANDY KRUSH JAVA                 * 
*           (c) 2016 - Daniel Coulom               *  
*           http://dcmoto.free.fr/                 *
*           http://forum.system-cfg.com/           *
*--------------------------------------------------*
* Ce code est distribue gratuitement dans l'espoir *
* qu'il sera utile, mais sans aucune  garantie  et *
* sans  engager  la  responsabilité  de  l'auteur. *
* Vous  pouvez  l' utiliser,  le  modifier  et  le *
* diffuser librement, en conservant cette  licence *
* et les références de l'auteur dans   toutes  les *
* copies. L'exploitation commerciale est interdite.*
\**************************************************/


/**************************************************\
*                Version 2016.09.23                *
\**************************************************/
* Historique
* 2016.09.23 Version originale     
  
*===========================================
* INITIALISATIONS
*===========================================  
  ORG   $9000
INIT
  LDX   #SCRINIT 
  LBSR  CHAINE  
  LBSR  BITMAP  
  LBSR  COULINI    determination des couleurs
  LDB   #$37
INIT3  
  LBSR  PDISP      affichage des pastilles
  DECB
  BGE   INIT3
  LBSR  PALIGN     recherche alignements
  
*===========================================
* DEROULEMENT DU JEU
*===========================================  
JEU
  LBSR  DSCORE     affichage du score
  SWI              contact crayon optique
  FCB   $16
  BCC   JEU        attente appui
  SWI              coordonnees crayon optique
  FCB   $18

* test de la colonne pointee
  TFR   X,D
  LSRD
  LSRD
  LSRD
  TFR   D,X
  CMPX  #$0011
  LBLT  ERROR      trop a gauche
  CMPX  #$0026
  LBGT  ERROR      trop a droite

* test de la ligne pointee
  TFR   Y,D
  LSRD
  LSRD
  LSRD
  TFR   D,Y
  CMPY  #$0005
  BLT   ERROR      trop haut
  CMPY  #$0017
  BGT   ERROR      trop bas

* test pointage centre pastille
  TFR   X,D
  SUBD  #$0011     centre premiere pastille
  LBSR  MODULO
  PSHS  B
  TFR   Y,D
  SUBD  #$0005     centre premiere pastille
  LBSR  MODULO
  PULS  A
  ADDB  -1,S
  BEQ   ERROR   

* permutation horizontale
HORIZ
  TFR   Y,D
  SUBD  #$0005     centre premiere pastille
  BSR   MODULO
  BNE   VERT
  PSHS  Y,X
  LBSR  PINVH
  BSR   PALIGN     recherche alignements
  PULS  X,Y
  BCS   HORIZ9     pas d'alignement
  LDD   COUPS
  ADDD  #$0001
  STD   COUPS
  CMPD  #$0020     fin de partie apres 32 coups 
  BEQ   FIN
  BRA  JEU         suite du jeu
HORIZ9
  LBSR  PINVH      retablissement position
  BRA   ERROR   

* permutation verticale
VERT
  TFR   X,D
  SUBD  #$0011     centre premiere pastille
  BSR   MODULO
  BNE   ERROR
  PSHS  Y,X
  LBSR  PINVV
  BSR   PALIGN     recherche alignement
  PULS  X,Y
  BCS   VERT9      pas d'alignement
  LDD   COUPS
  ADDD  #$0001
  STD   COUPS
  CMPD  #$0020
  BEQ   FIN
  LBRA  JEU        suite du jeu
VERT9
  LBSR  PINVV      retablissement position
  BRA   ERROR   

*===========================================
* ERREUR DE POINTAGE
*===========================================  
ERROR
  LDX   #$0800      hauteur note
  LDA   #$10        longueur note           
  LBSR  BUZZ
  LBRA  JEU

*===========================================
* FIN DE PARTIE
*===========================================  
FIN
  LDD   SCORE
  CMPD  MAX
  BLT   FIN1
  STD   MAX
FIN1
  LBSR  DSCORE  
  LDX   #APPUI 
  LBSR  CHAINE
FIN2
  SWI              lecture rapide clavier
  FCB   $0C   
  BCC   FIN2
  LDD   #$0000
  STD   COUPS
  STD   SCORE
  LBRA  INIT

*===========================================
* CALCUL DE D MODULO 3
* RESULTAT DANS D
*===========================================  
MODULO
  SUBD  #$03
  BGE   MODULO
  ADDD  #$03
  RTS
  
*===========================================
* RECHERCHE DES ALIGNEMENTS
* CARRY SET SI AUCUN ALIGNEMENT TROUVE
*===========================================  
PALIGN
  CLRA              initialisation compteur 
  PSHS  A           empilage compteur alignements
PALIGN1
* alignement horizontaux
  CLRB
HALIGN1
  LDX   #PCOLOR     table des couleurs
  LDA   B,X         couleur pastille B 
  LEAX  1,X
  CMPA  B,X         couleur pastille B+1
  BNE   HALIGN2
  LEAX  1,X
  CMPA  B,X         couleur pastille B+2
  BEQ   HALIGN4
HALIGN2  
  INCB
  CMPB  #$06 
  BEQ   HALIGN3
  CMPB  #$0E 
  BEQ   HALIGN3
  CMPB  #$16 
  BEQ   HALIGN3
  CMPB  #$1E 
  BEQ   HALIGN3
  CMPB  #$26 
  BEQ   HALIGN3
  CMPB  #$2E 
  BEQ   HALIGN3
  CMPB  #$36 
  BEQ   VALIGN
  BRA   HALIGN1
HALIGN3 
  ADDB  #$02
  BRA   HALIGN1
HALIGN4
  LBSR  SUPPR
  INCB
  LBSR  SUPPR
  INCB
  LBSR  SUPPR
  INC   ,S
  BRA   PALIGN1

*alignement verticaux
VALIGN
  CLRB
VALIGN1
  LDX   #PCOLOR     table des couleurs
  LDA   B,X         couleur pastille B 
  LEAX  8,X
  CMPA  B,X         couleur pastille B+8
  BNE   VALIGN2
  LEAX  8,X
  CMPA  B,X         couleur pastille B+16
  BEQ   VALIGN4
VALIGN2  
  INCB
  CMPB  #$28 
  BEQ   VALIGN8
  BRA   VALIGN1
VALIGN4
  ADDB  #$10
  LBSR  SUPPR
  LBSR  SUPPR
  LBSR  SUPPR
  INC   ,S
  BRA   PALIGN1
VALIGN8
  ANDCC #$FE        clear carry
  PULS  A
  CMPA  #$00
  BNE   VALIGN9
  ORCC  #$01        set carry
VALIGN9
  RTS
  
*===========================================
* DETERMINATION DES COULEURS INITIALES
*===========================================  
COULINI
  LDX   #PCOLOR     table des couleurs
  LDB   #$37        numero derniere pastille
COULINI1   
  LDA   #$01
  STA   B,X
  DECB
  BGE   COULINI1
  RTS

*===========================================
* CALCUL DU NUMERO DE PASTILLE B
* FONCTION DE LIGNE ET COLONNE POINTEES
*===========================================  
CALNUM
* numero dans la ligne = Y/3
  TFR   Y,D         ligne pointee
  SUBD  #$0005      centre premiere pastille
CALNUM1
  INCA   
  SUBB  #$03
  BGE   CALNUM1     
  DECA
* multiplication par 8
  LSLA
  LSLA
  LSLA
  PSHS  A           empilage resultat
* numero dans la ligne = X/3   
  TFR   X,D         colonne pointee
  SUBD  #$0011      centre premiere pastille
CALNUM2
  INCA   
  SUBB  #$03
  BGE   CALNUM2
  DECA
* ajout du nombre de pastilles lignes precedentes  
  ADDA  ,S
  TFR   A,B
  PULS  A
  RTS

*===========================================
* INVERSION DE DEUX PASTILLES B ET B+1
*===========================================  
PINVH
  BSR   CALNUM      calcul du numero B
  LDX   #PCOLOR     table des couleurs
  LDA   B,X         couleur premiere pastille
  PSH   A
  INCB
  LDA   B,X         couleur deuxieme pastille
  DECB
  STA   B,X         deuxieme dans premiere
  PULS  A
  INCB 
  STA   B,X         premiere dans deuxieme
  LBSR  PDISP       affichage deuxieme pastille
  DECB 
  LBSR  PDISP       affichage premiere pastille
  LDX   #$0080      hauteur note
  LDA   #$08        longueur note           
  BSR   BUZZ
  RTS

*===========================================
* INVERSION DE DEUX PASTILLES B ET B+8
*===========================================  
PINVV
  BSR   CALNUM      calcul du numero B
  LDX   #PCOLOR     table des couleurs
  LDA   B,X         couleur premiere pastille
  PSH   A
  ADDB  #$08
  LDA   B,X         couleur deuxieme pastille
  SUBB  #$08
  STA   B,X         deuxieme dans premiere
  PULS  A
  ADDB  #$08
  STA   B,X         premiere dans deuxieme
  LBSR  PDISP       affichage deuxieme pastille
  SUBB  #$08
  LBSR  PDISP       affichage premiere pastille
  LDX   #$0080      hauteur note
  LDA   #$08        longueur note           
  BSR   BUZZ
  RTS
  
*===========================================
* TEMPORISATION EN FONCTION DE X
*===========================================  
TEMPO
  PSHS  X
TEMPO1
  LEAX  -1,X
  BNE   TEMPO1
  PULS  X,PC  

*===========================================
* EMISSION SIGNAL SONORE
* TEMPO DANS X
* DUREE DANS A
*===========================================  
BUZZ
* signal sonore
  ORCC  #$50        masque les interruptions
  PSHS  A           compteur duree note
  LDA   $A7C1       registre pour le buzzer
BUZZ1
  ORA   #$01
  STA   $A7C1       buzzer a un 
  BSR   TEMPO       temporisation 
  ANDA  #$FE
  STA   $A7C1       buzzer a zero
  BSR   TEMPO       temporisation 
  DEC   ,S
  BNE   BUZZ1
  PULS  A 
  ANDCC #$AF        restaure les interruptions
  RTS

*===========================================
* SUPPRESSION PASTILLE B ET DESCENTE COLONNE
*===========================================  
SUPPR
  PSHS  B 
SUPPR1
  SUBB  #$08        pastille au-dessus
  BLS   SUPPR2      haut de colonne depasse
  BSR   SCROLL      scroll pastille
  BRA   SUPPR1      pastille suivante
SUPPR2   
  LDA   $2031       valeur aleatoire
  ANDA  #$07        valeur entre 0 et 7
  INCA
  CMPA  #$04        couleur de fond 
  BNE   SUPPR3
  LDA   #$05
SUPPR3   
  CMPA  #$06
  BLE   SUPPR4
  LDA   #$01
SUPPR4
  LDX   #PCOLOR     table des couleurs
  ADDB  #$08        premiere pastille colonne
  STA   B,X
  LBSR  PDISP       affichage pastille 
  PULS  B,PC 

*===========================================
* SCROLL PASTILLE B
*===========================================  
SCROLL
  LDX   #PADDR      table des adresses
  LEAX  B,X         pointeur dans la table
  LEAX  B,X         pointeur dans la table
  LDY   ,X          adresse pastille B
  PSHS  Y           empilage adresse originale
  LDA   #$18        compteur de boucle
  PSHS  A           empilage compteur
  PSHS  Y,X         empilage pointeur et adresse 
SCROLL1
  PULS  X,Y
  LEAY  $28,Y
  STY   ,X
  PSHS  Y,X
  BSR   PDISP
  DEC   4,S
  BNE   SCROLL1
  PULS  X,Y
  PULS  A
  PULS  Y           adresse originale
  STY   ,X          restauration de l'adresse
  LDX   #PCOLOR     table des couleurs
  LDA   B,X         couleur pastille depart
  LEAX  8,X         
  STA   B,X         couleur pastille arrivee
* signal sonore
  LDX   #$0040      hauteur note
  LDA   #$05        longueur note           
  LBSR  BUZZ
* incrementation du score
  PSHS  B 
  LDD   SCORE
  ADDD  #$0001
  STD   SCORE
  PULS  B 
  RTS

*===========================================
* AFFICHAGE DU SCORE
*===========================================  
DSCORE
  PSHS  B
  LDX   #COUPS+2
  LBSR  CHAINE
  LDD   COUPS
  JSR   $D83E   affichage registre D
  LDX   #SCORE+2
  BSR   CHAINE
  LDD   SCORE
  JSR   $D83E   affichage registre D
  LDX   #BLANC
  BSR   CHAINE
  LDX   #MAX+2
  BSR   CHAINE
  LDD   MAX
  JSR   $D83E   affichage registre D
  PULS  B,PC

*===========================================
* AFFICHAGE cOLONNE PASTILLE
*===========================================  
CDISP
  LDB   #$18
CDISP1               
  LDA   ,X+          
  STA   ,Y
  LEAY  $28,Y
  DECB
  BNE   CDISP1
  LEAY  -$3BF,Y 
  RTS

*===========================================
* AFFICHAGE DE LA PASTILLE B
*===========================================  
PDISP
  PSHS  B           empilage du numero de pastille 

* couleur
  LDA   $A7C0
  ANDA  #$FE
  STA   $A7C0
  LDX   #PCOLOR
  LDA   B,X         couleur pastille
  LSLA
  LSLA
  LSLA
  LSLA
  ORA   #$04        couleur de fond bleu
  LDX   #PADDR      table des adresses
  LSLB              deplacement dans la table              
  LDY   B,X         adresse pastille B
  PSHS  Y           empilage adresse
  LDB   #$18        nombre de lignes
PDISP0  
  STA   0,Y
  STA   1,Y
  STA   2,Y
  LEAY  $28,Y
  DECB
  BNE   PDISP0 
  ORA   #$07        couleur de fond blanc
  LEAY  -$27F,Y
  LDB   #$08 
PDISP2  
  STA   ,Y
  LEAY  $28,Y
  DECB
  BNE   PDISP2 
  PULS  Y

* forme  
  LDX   #PGRAPH      table de definition pastille
  INC   $A7C0        selection video forme
  BSR   CDISP        affichage premiere colonne
  BSR   CDISP        affichage deuxieme colonne
  BSR   CDISP        affichage troisieme colonne
  PULS  B,PC

*===========================================
* AFFICHAGE CHAINE EN X TERMINEE PAR $04
*===========================================  
CHAINE
  LDB   ,X+
  CMPB  #$04
  BEQ   CHAIN9
  SWI              affichage caractere
  FCB   $02
  BRA   CHAINE
CHAIN9
  RTS  

*===========================================
* AFFICHAGE BITMAP DU TITRE
*===========================================  
BITMAP
  LDY   #$0000
  LDX   #TITRE
  LDA   $A7C0
  ORA   #$01
  STA   $A7C0
BIT1
  LDD   ,x++
  STD   ,Y++
  CMPY  #$03C0
  BNE   BIT1
  RTS
  
*===========================================
* Compteur pour le score et les coups
*===========================================  
SCORE
  FDB  $0000
  FCB  $1E,$0A,$0A,$0A,$0A,$0A   
  FCC  'Score : '
  FCB  $04
COUPS
  FDB  $0000
  FCB  $1E,$0A,$0A,$0A,$0A 
  FCC  'Coups : '
  FCB  $04
MAX
  FDB  $0000
  FCB  $1E,$0A,$0A,$0A,$0A,$0A,$0A,$0A
  FCC  'Hiscore '
  FCB  $04
BLANC
  FCC  '     '
  FCB  $04
  
*===========================================
* Initialisation de l'ecran
*===========================================  
SCRINIT
  FCB  $1B   sequence d'echappement
  FCB  $47   forme blanc
  FCB  $1B   sequence d'echappement
  FCB  $54   fond bleu
  FCB  $1B   sequence d'echappement
  FCB  $64   cadre bleu
  FCB  $0C   effacement ecran
  FCB  $14   extinction curseur
  FCB  $1E,$0A,$0A,$0A,$0A,$0A
  FCC  'Patientez...'
  FCB  $0D,$0A,$0A,$0A,$0A,$0A
  FCC  'Alignez 3 pions'
  FCB  $0D,$0A
  FCC  'de m'
  FDB  $1643
  FCC  'eme couleur'
  FCB  $0D,$0A
  FCC  'horizontalement'
  FCB  $0D,$0A
  FCC  'ou verticalement'
  FCB  $0D,$0A,$0A
  FCC  'Pointez entre 2'
  FCB  $0D   CR     
  FCB  $0A   linefeed
  FCC  'pions pour les'
  FCB  $0D,$0A
  FCC  'permuter.'
  FCB  $04
  
*===========================================
* Message appuyez sur une touche
*===========================================  
APPUI
  FCB  $1E   locate 0,0
  FCB  $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A
  FCB  $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A
  FCC  'Appuyez sur une'
  FCB  $0D,$0A
  FCC  'touche pour'
  FCB  $0D,$0A
  FCC  'continuer...'
  FCB  $04
  
*===========================================
* Table des couleurs
*===========================================  
PCOLOR  
  FCB  $00,$00,$00,$00,$00,$00,$00,$00
  FCB  $00,$00,$00,$00,$00,$00,$00,$00
  FCB  $00,$00,$00,$00,$00,$00,$00,$00
  FCB  $00,$00,$00,$00,$00,$00,$00,$00
  FCB  $00,$00,$00,$00,$00,$00,$00,$00
  FCB  $00,$00,$00,$00,$00,$00,$00,$00
  FCB  $00,$00,$00,$00,$00,$00,$00,$00
  
*===========================================
* Position de la pastille dans l'ecran
*===========================================  
PADDR
  FDB  $0510,$0513,$0516,$0519,$051C,$051F,$0522,$0525
  FDB  $08D0,$08D3,$08D6,$08D9,$08DC,$08DF,$08E2,$08E5
  FDB  $0C90,$0C93,$0C96,$0C99,$0C9C,$0C9F,$0CA2,$0CA5
  FDB  $1050,$1053,$1056,$1059,$105C,$105F,$1062,$1065
  FDB  $1410,$1413,$1416,$1419,$141C,$141F,$1422,$1425
  FDB  $17D0,$17D3,$17D6,$17D9,$17DC,$17DF,$17E2,$17E5
  FDB  $1B90,$1B93,$1B96,$1B99,$1B9C,$1B9F,$1BA2,$1BA5
  
*===========================================
* Graphisme de la pastille (par colonne)
*===========================================  
PGRAPH  
  FCB   $00,$00,$00,$00,$00,$03,$07,$07
  FCB   $0F,$0F,$0F,$0F,$0F,$0F,$07,$07
  FCB   $03,$00,$00,$00,$00,$00,$00,$00

  FCB   $00,$00,$00,$00,$FC,$FF,$FF,$FF
  FCB   $FF,$FF,$FE,$FE,$FC,$FC,$F1,$C3  
  FCB   $FF,$FC,$00,$00,$00,$00,$00,$00

  FCB   $00,$00,$00,$00,$00,$00,$80,$80  
  FCB   $C0,$C0,$C0,$C0,$C0,$C0,$80,$80  
  FCB   $00,$00,$00,$00,$00,$00,$00,$00  
  
*===========================================
* Graphisme du titre
*===========================================  
TITRE
  FCB   $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  FCB   $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  FCB   $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE,$00,$7F,$FC,$00,$FC,$00,$00
  FCB   $3F,$00,$00,$00,$7F,$FF,$FF,$E3,$F8,$3F,$FF,$FF,$FF,$FC,$7F,$FF
  FCB   $FE,$3F,$83,$FF,$FF,$FF,$FF,$8F,$FF,$FF,$F1,$FF,$FF,$FF,$FF,$FF
  FCB   $FE,$FF,$BF,$FB,$FE,$F3,$FF,$FF,$CF,$7F,$FF,$FF,$7F,$FF,$FF,$E3
  FCB   $F0,$7F,$FF,$FF,$FF,$FC,$7F,$FF,$FE,$3F,$07,$FF,$FF,$FF,$FF,$8F
  FCB   $FF,$FF,$F1,$FF,$FF,$FF,$FF,$FF,$FE,$FF,$BF,$FB,$FE,$EF,$FF,$FF
  FCB   $F7,$7F,$FF,$FF,$7F,$FF,$FF,$E3,$E0,$FF,$FF,$FF,$FF,$FC,$7F,$FF
  FCB   $FE,$3E,$0F,$FF,$FF,$FF,$FF,$8F,$FF,$FF,$F1,$FF,$FF,$FF,$FF,$FF
  FCB   $FE,$F7,$DF,$F7,$DE,$EF,$FF,$FF,$F7,$7F,$FF,$FF,$7F,$FF,$FF,$E3
  FCB   $C1,$FF,$FF,$FF,$FF,$FC,$7F,$FF,$FE,$3C,$1F,$FF,$FF,$FF,$FF,$8F
  FCB   $FF,$FF,$F1,$FF,$FF,$FF,$FF,$FF,$FE,$F3,$DF,$F7,$9E,$DF,$FF,$FF
  FCB   $FB,$78,$00,$00,$7F,$FF,$FF,$E3,$83,$F8,$1F,$10,$7F,$00,$63,$E3
  FCB   $FE,$38,$3E,$02,$3E,$3C,$07,$88,$3F,$FF,$F1,$F0,$38,$FC,$70,$3F
  FCB   $FE,$F3,$EF,$EF,$9E,$DF,$00,$00,$FB,$7B,$FF,$FF,$FF,$FF,$FF,$E3
  FCB   $07,$E0,$0F,$00,$3E,$00,$63,$C3,$FE,$30,$7E,$02,$3E,$38,$03,$80
  FCB   $1F,$FF,$F1,$C0,$18,$FC,$40,$1F,$FE,$F5,$EF,$EF,$5E,$DE,$FF,$FF
  FCB   $7B,$7B,$FF,$FF,$FF,$FF,$FF,$E0,$0F,$C0,$07,$00,$3C,$00,$63,$C3
  FCB   $FE,$00,$FE,$06,$3E,$30,$03,$80,$0F,$FF,$F1,$80,$08,$F8,$00,$0F
  FCB   $FE,$F5,$F7,$DF,$5E,$DE,$FF,$FF,$7B,$7A,$00,$07,$FF,$FF,$FF,$E0
  FCB   $1F,$C3,$87,$0E,$18,$70,$61,$C7,$FE,$01,$FE,$1E,$3E,$31,$E1,$87
  FCB   $0F,$FF,$F1,$87,$0C,$78,$87,$0F,$FE,$F6,$F7,$DE,$DE,$DE,$FF,$FF
  FCB   $7B,$78,$FF,$F9,$FF,$FF,$FF,$E0,$0F,$C7,$C7,$1F,$18,$78,$71,$C7
  FCB   $FE,$00,$FE,$3E,$3E,$30,$71,$8F,$8F,$FF,$F1,$8F,$8C,$78,$8F,$8F
  FCB   $FE,$F6,$FB,$BE,$DE,$DE,$FF,$FF,$7B,$7F,$FF,$FE,$FF,$FF,$FF,$E0
  FCB   $0F,$FE,$07,$1F,$18,$F8,$71,$87,$FE,$00,$FE,$3E,$3E,$30,$0F,$8F
  FCB   $8F,$FF,$F1,$FC,$0C,$31,$FC,$0F,$FE,$F7,$7B,$BD,$DE,$DE,$FF,$FF
  FCB   $7B,$7F,$FF,$FF,$7F,$FF,$FF,$E1,$87,$F0,$07,$1F,$18,$FC,$70,$8F
  FCB   $FE,$18,$7E,$3E,$3E,$38,$03,$8F,$8F,$FF,$F1,$E0,$0E,$31,$E0,$0F
  FCB   $FE,$F7,$7D,$7D,$DE,$DE,$FF,$FF,$7B,$7E,$00,$1F,$7F,$FF,$FF,$E3
  FCB   $83,$E0,$07,$1F,$18,$FC,$78,$0F,$FE,$38,$3E,$3E,$3E,$3C,$01,$8F
  FCB   $8F,$FF,$F1,$C0,$0E,$21,$C0,$0F,$FE,$F7,$BD,$7B,$DE,$DE,$FF,$FF
  FCB   $7B,$00,$FF,$EF,$7F,$FF,$FF,$E3,$C3,$C1,$C7,$1F,$18,$F8,$78,$0F
  FCB   $FE,$3C,$3E,$3E,$3E,$3F,$C1,$8F,$8F,$F8,$F1,$83,$8F,$03,$83,$8F
  FCB   $FE,$F7,$BE,$FB,$DE,$DE,$FF,$FF,$7B,$FF,$FF,$EF,$7F,$FF,$FF,$E3
  FCB   $E1,$C7,$87,$1F,$18,$78,$78,$1F,$FE,$3E,$1E,$3E,$3C,$31,$F1,$8F
  FCB   $8F,$F8,$F1,$8F,$0F,$03,$8F,$0F,$FE,$F7,$DE,$F7,$DE,$DE,$FF,$FF
  FCB   $7B,$FF,$FF,$EF,$7F,$FF,$FF,$E3,$F0,$C3,$07,$1F,$1C,$30,$7C,$1F
  FCB   $FE,$3F,$0E,$3E,$18,$30,$61,$8F,$8F,$F8,$61,$86,$0F,$07,$86,$0F
  FCB   $FE,$F7,$DE,$F7,$DE,$DE,$FF,$FF,$7B,$FF,$FF,$EF,$7F,$FF,$FF,$E3
  FCB   $F0,$40,$07,$1F,$1C,$00,$7C,$1F,$FE,$3F,$06,$3E,$00,$38,$03,$8F
  FCB   $8F,$F8,$03,$80,$0F,$87,$80,$0F,$FE,$F7,$EF,$EF,$DE,$DF,$00,$00
  FCB   $FB,$00,$FF,$EF,$7F,$FF,$FF,$E3,$F8,$60,$03,$1F,$1E,$00,$7E,$1F
  FCB   $FE,$3F,$86,$3F,$00,$38,$03,$8F,$8F,$FC,$07,$C0,$07,$87,$C0,$07
  FCB   $FE,$F7,$EF,$EF,$DE,$DF,$FF,$FF,$FB,$7E,$00,$1F,$7F,$FF,$FF,$E3
  FCB   $FC,$30,$E3,$1F,$1F,$84,$7E,$3F,$FE,$3F,$C2,$3F,$C2,$3E,$0F,$8F
  FCB   $8F,$FF,$0F,$E1,$C7,$CF,$E1,$C7,$FE,$F7,$F7,$DF,$DE,$EF,$FF,$FF
  FCB   $F7,$7F,$FF,$FF,$7F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FC,$3F
  FCB   $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  FCB   $FE,$F7,$F7,$DF,$DE,$EF,$FF,$FF,$F7,$BF,$FF,$FE,$FF,$FF,$FF,$FF
  FCB   $FF,$FF,$FF,$FF,$FF,$FF,$FC,$7F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  FCB   $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE,$F7,$FB,$BF,$DE,$F3,$FF,$FF
  FCB   $CF,$CF,$FF,$F9,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F0,$7F
  FCB   $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  FCB   $FE,$07,$F8,$3F,$C0,$FC,$00,$00,$3F,$F0,$00,$07,$FF,$FF,$FF,$FF
  FCB   $FF,$FF,$FF,$FF,$FF,$FF,$F0,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  FCB   $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  FCB   $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F1,$FF
  FCB   $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF

END
Remarques :
1) Ce code contient des instructions invalides comme LSRD ou LSLD, mais l'assembleur A09 les décompose en instructions 6809 valides.
2) La version diffusée utilise le processeur 6309 en mode émulation, mais c'est totalement transparent pour l'utilisateur.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: MO5 Kandy Krush Java

Message par Carl »

Daniel, je ne connais pas ce jeu mais je n'arrive pas à échanger les deux que je voudrais...peux tu m'éclairer ?

la fin de la partie
candy.jpg
candy.jpg (208.66 Kio) Consulté 7082 fois
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: MO5 Kandy Krush Java

Message par Daniel »

Personne ne connaît ce jeu, je l'ai inventé de toutes pièces pour des enfants de 3 et 4 ans :wink:

Voici les règles détaillées :
- A chaque coup il faut aligner 3 pions de la même couleur verticalement ou horizontalement.
- Pour ce faire, il faut permuter deux pions voisins sur la même ligne ou la même colonne
- Pour permuter deux pions il faut cliquer entre les deux (plus exactement : appuyer avec le crayon optique).
- Le clic est refusé s'il n'est pas au bon endroit (hors du tableau ou pas précisément entre les deux pions à permuter).
- Le clic est refusé si la permutation ne génère pas d'alignement de trois pions

Après chaque coup les trois pions alignés sont retirés, les pions au-dessus descendent d'une case et les colonnes sont complétées par le haut avec des pions de couleur aléatoire. Ce nouvel agencement peut produire de nouveaux alignements de trois pions. Les pions alignés sont enlevés et le processus recommence jusqu'à ce qu'il n'y ait plus aucun alignement. On passe alors au coup suivant.

Chaque pion fait gagner un point lorsqu'il descend d'une case. La partie se joue en 32 coups. Si le score final est supérieur au "hiscore" il le remplace. Il faut appuyer sur une touche pour commencer une nouvelle partie.

Vous noterez que le score final est en grande partie aléatoire (fruit du hasard), mais le choix des permutations joue malgré tout un rôle non négligeable. Je ne sais pas si le jeu peut se bloquer (aucune permutation possible). Je n'ai encore jamais rencontré ce cas, il paraît hautement improbable mais peut-être pas impossible. Si ça arrive, faites une copie d'écran !

La prochaine version aura un message beaucoup plus visible en fin de partie :
##.png
##.png (2.76 Kio) Consulté 7072 fois
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: MO5 Kandy Krush Java

Message par __sam__ »

Daniel a écrit : - Le clic est refusé si la permutation ne génère pas d'alignement de trois pions
Ok c'est ca qu'il m'est arrivé hier soir. J'avais donc bien bloqué la grille :) Domage que ne j'ai pas pris de photo. J'avais peut-être oublié de tester l'un des echanges possibles. A ce propos, le jeu détecte-t-il les situations bloquées ?

Question spec: qui a la priorité ? Lorsqu'on fait un échange et qu'il apparait au moins 3 pieces de même couleur horizontalement ET verticalement ? Est-ce la direction avec le plus de pastilles qui l'emporte ou est-ce qu'il y a codé en dur une direction toujours choisie en pareil cas?
Dernière modification par __sam__ le 24 sept. 2016 15:29, modifié 1 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: MO5 Kandy Krush Java

Message par Daniel »

Ce sont toujours les mêmes qui n'ont pas de chance. Il y a une chance sur un million de bloquer le jeu et c'est tombé sur __sam__ :cry:
C'est à moi maintenant de trouver une parade pour la prochaine version...
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: MO5 Kandy Krush Java

Message par __sam__ »

Non il est plus probable que j'ai oublié de tester l'un des échanges.

Idée: Au lieu de faire tester par le programme si la situation est bloquée après chaque échange (long?), j'aurais une suggestion: un bouton "AIDE" fait faire une recherche exhaustive par l'ordi qui affiche tous les échanges possibles (faire apparaitre un symbole entre les pastilles échangeables). Ainsi les petits enfants ne seront pas coincés. Par contre pour éviter d'abuser de ce bouton "aide", on peut retirer 10 points par possibilité d'échange trouvée. A chacun de voir si ca vaut le coup d'utiliser ce bouton ou pas.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: MO5 Kandy Krush Java

Message par Daniel »

__sam__ a écrit :Question spec: qui a la priorité ? Lorsqu'on fait un échange et qu'il apparait au moins 3 pieces de même couleur horizontalement ET verticalement ? Est-ce la direction avec le plus de pastilles qui l'emporte ou est-ce qu'il y a codé en dur une direction toujours choisie en pareil cas?
Ce n'est pas très évolué : le programme recherche d'abord les alignements horizontaux en parcourant les lignes de haut en bas (de gauche à droite pour chaque ligne), puis les déplacements verticaux de la même manière. Il n'y a aucun traitement spécial pour les alignements de plus de trois pions, seuls les trois premiers sont pris en compte.

Je crois que la bonne stratégie pour un score élevé est de privilégier les alignements horizontaux dans les lignes inférieures. Mais la chance reste un facteur très important et ce n'est pas toujours le meilleur choix.

L'idée du bouton d'aide est très bonne, je vais essayer de le programmer.

Remarque : les K de Kandy et de Krush ne sont pas des fautes d'orthographe, mais un problème d'ayant droits (encore une fois). La société King a déposé les mots Candy, Crush et Saga pour les jeux.
Wikipedia a écrit :En réaction, des développeurs indépendants se sont mis à créer un nombre important de jeux comportant ces noms, de façon plus ou moins moqueuse vis-à-vis de cette histoire. On pouvait ainsi en compter 368 le 3 février 2014
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: MO5 Kandy Krush Java

Message par __sam__ »

On peut Imaginer Kandy Krush Kawa ? Ca va avoir du succès auprès de certains américains à bonets blancs :mrgreen:

Pour l'aide plutot que de retirer des points, on peut aussi limiter à 3 les aides possibles au cours d'une partie. A chacun de ne pas les utiliser trop vite.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17423
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: MO5 Kandy Krush Java

Message par fneck »

C'est pas bien de faire des jeux comme ça Daniel... au total j'ai dû passer au moins deux heures à jouer cet après midi :oops:

Si tu veux faire un petit truc en plus, c'est autoriser la disparition de plus de trois pions lorsque c'est possible, ça pimente le jeu!
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: MO5 Kandy Krush Java

Message par Daniel »

Nouvelle version avec une fonction d'aide et un message en fin de partie :
mo5kandykrushjava_20160925.zip
(72.22 Kio) Téléchargé 224 fois
mo5kandykrushjava_20160925.png
mo5kandykrushjava_20160925.png (2.7 Kio) Consulté 7022 fois
J'ai d'autres idées d'améliorations, il y aura peut-être de nouvelles versions dans le futur...

@Fabien: Pour les non-joueurs comme toi et moi les jeux vidéo actuels demandent trop de réflexion et trop de dextérité. Les jeux simplistes, au contraire, ne nécessitent aucune adresse et très peu de réflexion, c'est pourquoi nous accrochons davantage. C'est comme les jeunes enfants : L'Aigle d'Or, Le 5e Axe ou Sapiens sont trop complexes, au dessous de dix ans ils abandonnent vite. Par contre j'espère qu'ils aimeront Kandy Krush Java, j'aurai probablement la confirmation aux prochaines vacances scolaires...
Je note la suggestion pour les alignements de 4 pions, mais j'attends d'avoir un peu plus de recul pour modifier le moteur du jeu.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
petitjd
Messages : 2007
Inscription : 23 oct. 2007 11:50

Re: MO5 Kandy Krush Java

Message par petitjd »

Ca a l'air sympa ce jeu, j'ose même pas imaginer l'algo.
J'ai jamais rien compris à Candy Crush mais là ca à l'air plus clair, encore que je ne comprend pas l'aide de combinaison entre la pastille jaune et la pastille violette au bas à droite sur la dernière capture d'écran.

[EDIT]Il y a aussi l'aide de combinaison entre la pastille jaune et la pastille rouge au bas à gauche de la capture écran ci-dessus qui me parait curieuse.
Dernière modification par petitjd le 25 sept. 2016 15:50, modifié 1 fois.
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: MO5 Kandy Krush Java

Message par Papy.G »

Aucun risque de poursuites pour copie, la fonctionnalité première du jeu original étant de rapporter un max de sous par l'affichage de pubs, le principe du jeu n'ayant pour cela aucun intérêt autre que d'être un jeu simple et addictif. En cela, il n'y a pas copie. :roll:

Ceci dit, on pourrait envisager d'y voir de la pub (désactivée par défaut) pour les jeux programmés récemment, sur MO/TO, mais aussi sur toutes les machines dont nous parlons ici. :mrgreen:

Avec le crayon optique pour pointer, on est proche de l'expérience tactile, cette machine est l'idéal pour ce genre d'adaptation! 8)

Dans le jeu "original", la grille fait 7x8 pions? :?:
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: MO5 Kandy Krush Java

Message par Daniel »

Même si le jeu est inspiré de Candy Crush, il est totalement différent et il y a une colonne et deux lignes en moins.
Pour jouer sur MO5 il faut le crayon optique et un écran cathodique. Je ne sais pas si on peut adapter le driver de souris du MO6 au MO5, mais c'est une question à creuser car ce serait bien pratique pour les écrans LCD.
petitjd a écrit :je ne comprend pas l'aide de combinaison entre la pastille jaune et la pastille violette au bas à droite sur la dernière capture d'écran.
Bien vu ! C'est un bug de l'aide. Nouvelle version corrigée ci-dessous :
mo5kandykrushjava_20160925_win.zip
(72.22 Kio) Téléchargé 216 fois
mo5kandykrushjava_20160925.png
mo5kandykrushjava_20160925.png (2.69 Kio) Consulté 6994 fois
[Edit]
Dans la version Windows du jeu, la configuration de départ est toujours la même, car la mémoire est restaurée à l'identique à chaque démarrage. Dans les versions MO5 ça ne sera pas le cas, les couleurs initiales sont choisies au hasard.
Daniel
L'obstacle augmente mon ardeur.
Répondre