Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| Panoramic pour Android : instantané du développement | |
| | |
Auteur | Message |
---|
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panoramic pour Android : instantané du développement Jeu 13 Nov 2014 - 10:47 | |
| Moi, j'ai un Galaxy S3 et ça marche si ça peut t'aider
PS: Pour Jack au niveau de l'éditeur intégré. J'ai réussi à reproduire plusieur fois le message de violation d'accès en supprimant des caractère (l'équvalent du backspace sur le clavier intégré)
Du coup je suis la procédure recommandé (modification du source depuis le PC) ou en utilisant un petit traitement de texte sur mon S3 (perso, j'ai mis TED, ça marche bien. Je ne sais pas s'il y a mieux pour éditer mais ça marche bien en attendant une version Android de Synedit) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Panoramic pour Android : instantané du développement Jeu 13 Nov 2014 - 16:34 | |
| Je télécharge le Galaxy S3 et j'essaie... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Panoramic pour Android : instantané du développement Jeu 13 Nov 2014 - 17:23 | |
| Dommage. Avec le GAlaxy S3 simulé, j'ai exactement le même message... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panoramic pour Android : instantané du développement Ven 14 Nov 2014 - 15:01 | |
| Je pense que ça vient de l'émulateur Klaus. Bon sinon pour tester Panoramic sous Android, j'ai essayé de voir un peu ce que l'on pouvait faire. Actuellement, j'ai rencontré des problème de remplissage avec 2_fill sur les 2d_rectangle ou les 2D_circle. Il me remplissait une zone de l'écran ne correspondant pas à l'objet. J'ai fini pas faire un code simplifié qui devrait marcher. Il fonctionne sur le PC et d'après mes tests, il devrait aussi fonctionner sur Android car Jack utilise la fonction 2d_circle dans une de ses démos, mais moi, la balle ne s'affiche pas. Je mets le code et si tu as le temps de m'expliquer ce que je devrais faire pour que ça marche Jack, je pourrais avoir l'honneur d'avoir fait le premier jeu (basic) a fonctionner sous Panoramic pour Android Bon le jeu n'est pas parfait du tout, c'est juste un exemple et un test des possibilité du langage et pour le moment pour une raison qui m'échappe, je rappelle que la balle ne s'affiche pas. - Code:
-
' Panorabric version Android (Prevu pour Samsung S3) ' Resolution de l'écran 600 x 380
label efface_raquette, dessine_raquette label clic,fin, boucle_principale, init_niveau, recommence label trace_brique,dessine_briques label lance_balle, deplace_balle, trace_balle, efface_balle
' Déclarations dim i,j,c dim h,l : h=600: l=380 dim x_r , y_r, hauteur_r, largeur_r dim hauteur_b, largeur_b : hauteur_b = 8 : largeur_b=22 dim Nb_lignes, Nb_briques_restantes dim Nb_b_ligne : Nb_b_ligne = int((l - 60)/(largeur_b+5)) dim xb, yb, r , N, n_picture dim x_ball,y_ball, r_ball, n_ball : r_ball = 10 dim vies : vies = 3 dim score : score = 0 dim objet%, nom_couleur$ dim ecran%, aff_vies%, aff_score% dim Nb_couleur%: Nb_couleur% = 18 dim t_c(Nb_couleur%,3) dim ombre : ombre=30 dim lumiere : lumiere = 30
height 0, h: width 0,l caption 0, "PANORABRIC Android - V1.0" border_small 0 button 1 : hide 1 : ' Creation du bouton gauche top 1,h - 80:left 1,10 : caption 1,"<" on_click 1,clic button 2 : hide 2 : ' Creation du bouton droite top 2,h - 80:left 2,50+width(1) : caption 2,">" on_click 2,clic button 3 : hide 3 : ' Creation du bouton quitter top 3,h - 80:left 3,l-width(3)-28 : caption 3,"Quitter" on_click 3,clic timer 4
' Initialisation objet% = 5 : ' On prend 3 objets hauteur_r = 10 : largeur_r=60 y_r = h-120-hauteur_r
data "0 - Noir", 0, 0, 0, "1 - Blanc", 255,255,255 data "2 - couleur de fond - kaki foncé", 155,155, 55 data "3 - Kaki", 180,180,80, "4 - gris foncé", 80, 80, 80 data "5 - bleu" ,80, 80,215, "6 - rouge", 215, 80, 80 data "7 - vert", 80,215, 80, "8 - gris", 155,133,155 data "9 - vert clair", 100,215,100, "10 - violet", 215, 80,215 data "11 - kaki clair", 215,215, 80, "12 - bleu cyan", 80,215,215 data "13 - bleu moyen", 100,100,215, "14 - vert moyen",55,215,133 data "15 - violet",133, 55,215, "16 - marron clair",215,133, 55 data "17 - bleu nuit", 55, 55,133
for i = 1 to Nb_couleur% read nom_couleur$ for j = 1 to 3 read c : t_c(i,j)=c next j next i
ecran% = objet% : picture ecran% top ecran%,0: left ecran%,1 h = h -100 height ecran%, h: width ecran%,l-18 2D_target_is ecran%: objet% = objet% +1
' Trace le contour 2D_pen_color t_c(3,1), t_c(3,2), t_c(3,3) 2D_poly_from 0,h : 2D_poly_to 8,h : 2D_poly_to 8,20 2D_poly_to l-23,20 : 2D_poly_to l-23,h : 2D_poly_to l-15,h
aff_vies% = objet% : alpha aff_vies% ' color aff_vies%, t_c(3,1), t_c(3,2), t_c(3,3) top aff_vies%,2 : left aff_vies%, 30 width aff_vies%,140 : caption aff_vies%, "Vies = "+str$(vies) objet% = objet% + 1
aff_score% = objet% : alpha aff_score% ' color aff_score%, t_c(3,1), t_c(3,2), t_c(3,3) top aff_score%,2 : left aff_score%, 200 width aff_score%,140 : caption aff_score%, "Score = "+str$(score) objet% = objet% + 1
gosub init_niveau
' timer pour deplacements timer_interval 4,60 : on_timer 4,boucle_principale show 1: show 2: show 3 end
Dessine_raquette: 2D_pen_color t_c(5,1), t_c(5,2), t_c(5,3) 2D_poly_from x_r,y_r : 2d_poly_to x_r+largeur_r,y_r 2d_poly_to x_r+largeur_r,y_r + hauteur_r : 2d_poly_to x_r ,y_r + hauteur_r 2d_poly_to x_r,y_r return
Efface_raquette: 2D_pen_color t_c(2,1), t_c(2,2), t_c(2,3) 2D_poly_from x_r,y_r : 2d_poly_to x_r+largeur_r,y_r 2d_poly_to x_r+largeur_r,y_r + hauteur_r : 2d_poly_to x_r ,y_r + hauteur_r 2d_poly_to x_r,y_r return
init_niveau: Nb_lignes = 6: gosub dessine_briques x_r = 0.5 * (l - largeur_r - 35) gosub Dessine_raquette gosub Lance_balle return
dessine_briques: if variable("t_br")=1 then free t_br dim t_br(Nb_lignes*Nb_b_ligne,5) dim k: k=0 : Nb_briques_restantes = 0 For i= 1 to Nb_lignes yb = 25 + (hauteur_b + 15) * i For j = 1 to Nb_b_ligne xb = 15 + (largeur_b + 5) * (j-1) k=k+1 : t_br(k,1) = 1 : t_br(k,5) = 100 t_br(k,2) = t_c(5+i,1): t_br(k,3) = t_c(5+i,2): t_br(k,4) = t_c(5+i,3) Nb_briques_restantes = Nb_briques_restantes + 1 2D_pen_color t_br(k,2), t_br(k,3), t_br(k,4) : gosub trace_brique Next j Next i free k return
trace_brique: 2d_poly_from xb,yb : 2d_poly_to xb+largeur_b, yb 2d_poly_to xb+largeur_b, yb+hauteur_b-2 : 2d_poly_to xb, yb+hauteur_b-2 2d_poly_to xb, yb return
Lance_balle: y_ball = y_r - 25 x_ball = int(rnd(l-60)) + 15 r=1 return
efface_balle: 2D_pen_color t_c(2,1), t_c(2,2), t_c(2,3) 2D_circle x_ball+r_ball, y_ball+r_ball, r_ball return
trace_balle: 2D_pen_color t_c(6,1), t_c(6,2), t_c(6,3) 2D_circle x_ball+r_ball, y_ball+r_ball, r_ball return
recommence: vies = 3 : score = 0 gosub efface_raquette gosub efface_balle gosub init_niveau timer_on 4 return
deplace_balle: IF x_ball> l-29 -2*r_ball x_ball = l-29 -2*r_ball : c = 2 ELSE IF x_ball < 12 THEN x_ball = 12 : c = 1 END_IF ' IF y_ball > h-35-2*r_ball THEN r = 1 : ELSE : IF y_ball < 24 THEN r = 2 IF y_ball < 26 THEN y_ball = r = 2 IF c<2 THEN x_ball = x_ball + 5 : ELSE: x_ball = x_ball - 5 IF r<2 THEN y_ball = y_ball - 5 : ELSE: y_ball = y_ball + 5 return
boucle_principale: if variable("temp") = 0 then dim temp timer_off 4 gosub efface_balle ' Teste si collision avec une brique if (r= 1 and y_ball < (25 + hauteur_b + (hauteur_b + 15) * Nb_lignes)) i = int((x_ball - 15) / (largeur_b + 5))+1 temp = int ((y_ball -25 -hauteur_b) / (hauteur_b +15))+1 N = (temp-1)*Nb_b_ligne +i if N <= (Nb_lignes*Nb_b_ligne) and N>0 if t_br(N,1) = 1 r=2 : t_br(N,1) = 0 ' Efface les briques 2D_pen_color t_c(2,1), t_c(2,2), t_c(2,3) xb = 15 + (largeur_b + 5) * (i-1) : yb = 25 + (hauteur_b + 15) * (temp) gosub trace_brique Nb_briques_restantes = Nb_briques_restantes - 1 : score = score + t_br(N,5) end_if end_if else if (r= 2 and (y_ball > (40 + hauteur_b)) and (y_ball < (25 + hauteur_b + (hauteur_b + 15) * Nb_lignes) )) i = int((x_ball - 30) / (largeur_b + 10)) +1 temp = int (((y_ball+2*r_ball) -25 -hauteur_b) / (hauteur_b +15)) N = (temp-1)*Nb_b_ligne +i if N <= (Nb_lignes*Nb_b_ligne) and N>0 if t_br(N,1) = 1 r=1 : t_br(N,1) = 0 ' Efface les briques 2D_pen_color t_c(2,1), t_c(2,2), t_c(2,3) xb = 15 + (largeur_b + 5) * (i-1) : yb = 25 + (hauteur_b + 15) * (temp) gosub trace_brique Nb_briques_restantes = Nb_briques_restantes - 1 : score = score + t_br(N,5) end_if end_if end_if end_if
' Trace la balle gosub deplace_balle gosub trace_balle
' Verifie si la balle touche la raquette if r=2 and y_ball > y_r - 2 * r_ball - 4 if ((x_ball > (x_r - r_ball)) and (x_ball < (x_r + largeur_r))) r = 1 score=score+1 else if r=2 and y_ball > y_r ' Balle perdue wait 30: gosub efface_balle wait 100: gosub Lance_balle vies = vies-1 end_if end_if end_if caption aff_vies%, "Vies = "+str$(vies) caption aff_score%, "Score = "+str$(score) if Nb_briques_restantes = 0 Message "Bravo, niveau suivant ..." gosub efface_balle : gosub init_niveau end_if if vies < 1 then goto fin free temp timer_on 4 return
clic: if clicked(1) = 1 gosub Efface_raquette : ' Efface ancienne raquette x_r = x_r - (largeur_r / 2) : ' Mise à jour de la position de la raquette suite à l'appuie sur la flèche if x_r < 10 then x_r=10 : ' Mais on ne doit pas dépasser les bords !! gosub dessine_raquette : ' Actualise l'affichage de la raquette else if clicked(3) = 1 gosub fin else gosub Efface_raquette : ' Efface ancienne raquette x_r = x_r + (largeur_r / 2) : ' Mise à jour de la position de la raquette suite à l'appuie sur la flèche if x_r > l - largeur_r-26 then x_r = l - largeur_r-26 : ' Mais on ne doit pas dépasser les bords !! gosub dessine_raquette : ' Actualise l'affichage de la raquette end_if end_if return
fin: timer_off 4 terminate
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Panoramic pour Android : instantané du développement Ven 14 Nov 2014 - 15:30 | |
| Je veux bien que ça vienne de l'émulateur, Jicehel, mais j'aimerais comprendre. Est-ce qu'il y a une option ou un paramètre dans Androïd qu'il faut adapter pour que Panoramic marche ? Car d'autres programmes marchent très bien... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panoramic pour Android : instantané du développement Ven 14 Nov 2014 - 17:24 | |
| Là, je laisse Jack répondre. J'ai voulu installer Andy sur mon poste au boulot mais notre politique de sécurité ne me laisse pas faire ... | |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Panoramic pour Android : instantané du développement Ven 14 Nov 2014 - 20:00 | |
| @Klaus: je ne pense pas qu'il y ait des options à positionner. Panoramic a fonctionné immédiatement sur plusieurs SmartPhones sans option particulière. J'utilise quelquefois l'émulateur fourni avec Android SDK, et avec lequel Panoramic pour Android fonctionne : AVD Manager (Android Virtual Device). @Jicehel: tu étais le premier utilisateur de Panoramic pour Android. Maintenant tu es le premier à avoir programmé un jeu pour Android avec Panoramic. Il y avait un bug sur 2D_CIRCLE, en fait cette commande créait un cercle plein et non pas la circonférence. Cependant, l'exemple 3 qui est fourni ne fonctionne plus ! Voici la version de Panoramic qui fait tourner ton jeu: http://www.datafilehost.com/d/1aed7de2Elle possède en outre un début de documentation intégrée. _________________ username : panoramic@jack-panoramic password : panoramic123
Dernière édition par Jack le Sam 15 Nov 2014 - 6:15, édité 2 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Panoramic pour Android : instantané du développement Sam 15 Nov 2014 - 0:07 | |
| @Jack Voulant télécharger à partir du site mentionné dans ton poste ci-haut, mon anti-virus Avira me signale - Citation :
Remarque relative à la sécurité L’accès au fichier ‘C:\Users\acer\Desktop\Download.exe’ Contenant le virus ou programme indésirable ‘TR/Cript.XPACK.Gen8’ a été bloqué.
| |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Panoramic pour Android : instantané du développement Sam 15 Nov 2014 - 5:56 | |
| Je n'avais pas essayé le téléchargement ... J'ai désactivé tous les liens. _________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panoramic pour Android : instantané du développement Sam 15 Nov 2014 - 9:06 | |
| Jack, ça doit marcher, je pense si tu mets les versions sur le webdav et qu'on le copie sur le pc puis qu'on le transfert en usb dans download ? Je n'ai pas essayé mais si on créé un repertoire Panoramic sur notre téléphone, ça devrait marcher aussi, non ? | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panoramic pour Android : instantané du développement Sam 15 Nov 2014 - 9:08 | |
| Il ne faut pas paniquer, il fallait juste décocher la case pour télécharger en utilisant le "downloader" pour que ça marche bien. C'est le programme downloader.exe qui est douteux. Si on télécharge directement, il n'y a pas de problème. | |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Panoramic pour Android : instantané du développement Sam 15 Nov 2014 - 19:01 | |
| Voici la dernière version de Panoramic pour Android : http://www.filedropper.com/panoramicElle est aussi sur mon Webdav. Elle possède un début de documentation (touche DOC) Les commandes de dessin suivantes sont terminées et testées : 2D_LINE 2D_POLY_FROM 2D_POLY_TO 2D_CIRCLE 2D_RECTANGLE 2D_CLEAR 2D_PEN_WIDTH 2D_PEN_COLOR _________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Panoramic pour Android : instantané du développement Dim 16 Nov 2014 - 2:15 | |
| @Jack J’ai téléchargé sur ton Webdav ESSAIS_ANDROID juste pour voir. Comme je ne dispose ni de Smartphone ni de tablette sous Androïd, j’ai étudié le fichier ESSAIS_ANDROID\assets\internal/03_checkerboard.txt qui représente un code Panoramic de tracé d’un damier. Je me suis donné la liberté (ai-je le droit !?) de recoder le programme à ma manière : Pas de LABEL ni de GOSUB ; uniquement des SUB. J’ai également optimisé les sous programmes : draw the frame of board draw the black squares draw white pawns draw red pawn Et ça donne ceci : - Code:
-
rem ============================================================================ rem 03_checkerboard.txt rem Auteur Jack rem Recodé par Papydall rem ============================================================================
Init() Draw_Black_Squares() Draw_White_Pawns() Draw_Red_Pawn() end
rem ============================================================================ SUB Init()
dim x,y,case1,case2,bord,rayon color 0,255,255,255 case1 = 50 : bord = 5 picture 1 : width 1,420:height 1,440 : 2D_target_is 1 2d_rectangle bord,bord,8*case1+bord,8*case1+bord : ' draw the frame of board END_SUB rem ============================================================================ ' draw the black squares SUB Draw_Black_Squares() 2d_fill_color 0,0,0 for x = 1 to 7 step 2 : Case(x,0) : Case(x,2) : Case(x,4) : Case(x,6) : next x for x = 0 to 6 step 2 : Case(x,1) : Case(x,3) : Case(x,5) : Case(x,7) : next x END_SUB rem ============================================================================ SUB Case(x,y) dim_local i for i=0 to case1 2D_poly_from i+bord+x*case1,bord+y*case1 2D_poly_to i+bord+x*case1,bord+(y+1)*case1 next i END_SUB rem ============================================================================ ' draw white pawns SUB Draw_White_Pawns() rayon = case1 / 2.7 : case2 = case1 / 2 2d_fill_color 255,255,255 for x = 1 to 7 step 2 : Pawn(x,0) : Pawn(x,2) : next x for x = 0 to 6 step 2 : Pawn(x,1) : next x END_SUB rem ============================================================================ ' Draw red pawn SUB Draw_Red_Pawn() 2d_fill_color 255,20,20 for x = 1 to 7 step 2 : Pawn(x,6) : next x for x = 0 to 6 step 2 : Pawn(x,5) : Pawn(x,7) : next x END_SUB rem ============================================================================ ' draw pawn in case (x,y) SUB Pawn(x,y) 2d_circle bord +(2*x+1)*case2, bord +(2*y+1)*case2, rayon END_SUB rem ============================================================================
| |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Panoramic pour Android : instantané du développement Dim 16 Nov 2014 - 4:01 | |
| Merci d'avoir remis ce code au gout du jour avec des subs. Le dessin du damier venait d'un jeu complet de dames contre l'ordinateur, que j'avais codé début 2007 en adaptant un code pour TRS80 de 1978 ! Le voici : - Code:
-
rem 2007/02/21 rem CHECKERS
dim xm,ym,x,y dim case,case2,bord,rayon dim A(64) dim AA,B,C,F,G,H,I,J,K,L,N,Q,R,S,T
label player,player_from,player_to,cont1,cont2 label man,square,move label AB1,AB2,AB3,CD,CAS label draw,IA,IA2,IA3,IA4,IA5,IA6 label SP1,SP2,SP3,SP4,TP1,TP2,TP3,TP4,TP5,TP6
left 0,100:top 0,0:width 0,510:height 0,550 caption 0,"C H E C K E R S" rem white background color 0,255,255,255:display
picture 1:left 1,35:top 1,33:width 1,410:height 1,410
rem picture 1:width 1,410:height 1,410
color 1,230,230,230:display
rem memory of play list 2:top 2,35:left 2,455:height 2,410:width 0,610
rem draw checkboard 8x8 case=50:rem size of a square bord=5: rem shift rayon=case/2.7 case2=case/2
rem read internal code for N=1 to 64 read A(N) next N data 99,1,99,1,99,1,99,1,1,99,1,99,1,99,1,99,99,1,99,1,99,1 data 99,1,0,99,0,99,0,99,0,99,99,0,99,0,99,0,99,0,-1,99,-1,99 data -1,99,-1,99,99,-1,99,-1,99,-1,99,-1,-1,99,-1,99,-1,99,-1,99 rem 99 = white square rem 2 = square with computer's king rem 1 = square with computer's man rem 0 = empty square rem -1 = square with player's man rem -2 = square with player's king
rem draw frame of board 2d_target_is 1 2d_poly_from bord,bord 2d_poly_to 8*case+bord,bord 2d_poly_to 8*case+bord,8*case+bord 2d_poly_to bord,8*case+bord 2d_poly_to bord,bord
rem draw the board for n=1 to 64 gosub draw next n
rem move explanation alpha 3:left 3,150:top 3,450:width 3,48:height 3,13 caption 3,"FROM : click on man, then TO : click on empty square"
rem to terminate check 4:left 4,400:top 4,480:caption 4,"Terminate"
rem column names alpha 5:left 5,60:top 5,15:width 5,25:height 5,13:caption 5,"A" alpha 6:left 6,60+50:top 6,15:width 6,25:height 6,13:caption 6,"B" alpha 7:left 7,60+2*50:top 7,15:width 7,25:height 7,13:caption 7,"C" alpha 8:left 8,60+3*50:top 8,15:width 8,25:height 8,13:caption 8,"D" alpha 9:left 9,60+4*50:top 9,15:width 9,25:height 9,13:caption 9,"E" alpha 10:left 10,60+5*50:top 10,15:width 10,25:height 10,13:caption 10,"F" alpha 11:left 11,60+6*50:top 11,15:width 11,25:height 11,13:caption 11,"G" alpha 12:left 12,60+7*50:top 12,15:width 12,25:height 12,13:caption 12,"H"
rem lines names alpha 13:left 13,20:top 13,57+7*50:caption 13,"8" alpha 14:left 14,20:top 14,57+6*50:caption 14,"7" alpha 15:left 15,20:top 15,57+5*50:caption 15,"6" alpha 16:left 16,20:top 16,57+4*50:caption 16,"5" alpha 17:left 17,20:top 17,57+3*50:caption 17,"4" alpha 18:left 18,20:top 18,57+2*50:caption 18,"3" alpha 19:left 19,20:top 19,57+50:caption 19,"2" alpha 20:left 20,20:top 20,57:caption 20,"1"
rem display move to play alpha 21:left 21,150:top 21,480:width 21,48:height 21,13
player: caption 21,"FROM ?" gosub player_from gosub IA goto player
end
player_from: if mouse_left_up(1)=1 xm=mouse_x_left_up(1) xm=xm-bord if xm<0 then xm=0 xm=int(xm/case)+1 if xm>8 then xm=8 rem xm=column number
ym=mouse_y_left_up(1) ym=ym-bord if ym<0 then ym=0 ym=int(ym/case)+1 if ym>8 then ym=8 rem ym=line number
f=xm+8*(ym-1) n=f gosub move item_add 2,"PLAYER :" item_add 2,"FROM "+chr$(65+x)+str$(y+1) wait 100 caption 21,"TO ?" goto cont1 end_if wait 100 if checked(4)=1 then terminate goto player_from
cont1: Q=1: rem illegal move?
rem F=0 means end by operator if (F=0) then end
rem F must be inside the checkboard if (F<1) or (F>64) then goto player_from
player_to: if mouse_left_up(1)=1 xm=mouse_x_left_up(1) xm=xm-bord if xm<0 then xm=0 xm=int(xm/case)+1 if xm>8 then xm=8 rem xm=column number
ym=mouse_y_left_up(1) ym=ym-bord if ym<0 then ym=0 ym=int(ym/case)+1 if ym>8 then ym=8 rem ym=line number
t=xm+8*(ym-1) n=t gosub move item_add 2,"TO "+chr$(65+x)+str$(y+1) goto cont2 end_if
wait 200 if checked(4)=1 then terminate goto player_to
cont2: if (T=0) and (Q=0) then return: rem answer 0 then 0 to terminate
rem T must be inside the checkboard if (T<1) or (T>64) then goto player_to
gosub CD:rem check if move is legal, result in Q
if Q=0 then item_add 2,"ILLEGAL MOVE ": goto player_from
rem here move is legal
rem update internal board A(T)=A(F) A(F)=0
rem update squares N=F gosub draw N=T gosub draw
rem draw if king if T<9 A(T)=-2 N=T gosub draw end_if
if (ABS(T-F)=7) or (ABS(T-F)=9) then return
N=(T+F)/2 A(N)=0 gosub draw if A(T)=-1 then goto AB2 for B=7 to 9 step 2 G=T+B if (G>64) or ((G+B)>64) then goto AB1 if ((A(G)=1) or (A(G)=2)) and (A(G+B)=0) F=T Q=0 caption 21,"TO ?" goto player_to end_if
AB1: next B
AB2: for B=-9 to -7 step 2 G=T+B if (G<0) or ((G+B)<0) then goto AB3 if ((A(G)=1) or (A(G)=2)) and (A(G+B)=0) F=T Q=0 caption 21,"TO ?" goto player_to end_if
AB3: next B return
CD: rem analyse if move is legal (result in Q) Q=0 if (A(F)>-1) or (A(T)<>0) then return: rem illegal if A(F)=-2 for B=-9 to -7 step 2 gosub CAS next B end_if for B=7 to 9 step 2 gosub CAS next B return
CAS: if ((F-T)=B) or (((F-T)=(2*B)) and ((A(INT((F+T)/2))=1) or (A(INT((F+T)/2))=2))) then Q=1 return
draw: rem draw A(N) gosub move
if a(n)=0 2d_fill_color 0,0,0 gosub square end_if
if a(n)=2 2d_fill_color 0,0,0 gosub square 2d_fill_color 255,255,255 gosub man 2d_fill_color 255,20,20 2d_circle bord+(2*x+1)*case2,bord+(2*y+1)*case2,rayon/2 end_if
if a(n)=1 2d_fill_color 0,0,0 gosub square 2d_fill_color 255,255,255 gosub man end_if
if a(n)=-1 2d_fill_color 0,0,0 gosub square 2d_fill_color 255,20,20 gosub man end_if
if a(n)=-2 2d_fill_color 0,0,0 gosub square 2d_fill_color 255,20,20 gosub man 2d_fill_color 255,255,255 2d_circle bord+(2*x+1)*case2,bord+(2*y+1)*case2,rayon/2 end_if
return
IA: rem artificial intelligence Q=-99 for I=1 to 64 if (A(I)<1) or (A(I)>2) then goto IA2 if A(I)=2 for B=-9 to -7 step 2 gosub SP1 next B end_if
for B=7 to 9 step 2 gosub SP1 next B
IA2: next I if Q=-99 then end:rem finished
IA3: A(T)=A(F) A(F)=0 N=F gosub move item_add 2,"COMPUTER:" item_add 2,"FROM "+chr$(65+x)+str$(y+1)
gosub draw N=T gosub move item_add 2,"TO "+chr$(65+x)+str$(y+1)
gosub draw if T>56 A(T)=2 N=T gosub draw end_if if (ABS(F-T)<>14) and (ABS(F-T)<>18) then return N=(T+F)/2 A(N)=0 gosub draw if A(T)=1 then goto IA5 for B=-9 to -7 step 2 C=T+B if (C<0) or ((C+B)<0) then goto IA4 if (A(C)<0) and (A(C+B)=0) then F=T : T=C+B : goto IA3
IA4: next B
IA5: for B=7 to 9 step 2 C=T+B if (C>64) or ((C+B)>64) then goto IA6 if (A(C)<0) and (A(C+B)=0) then F=T : T=C+B : goto IA3
IA6: next B return
SP1: R=-99 J=I+B K=0 if (J<0) or (J>64) then goto SP4 if A(J)=0 then R=0 : L=J if ((J+B)<0) or ((J+B)>64) then goto SP2 if (A(J+B)=0) and (A(J)<0) then R=5 : K=1 : L=J+B
SP2: if R=-99 then goto SP4 if A(I)=2 then R=R-1 : goto SP3 if I<9 then R=R-2 if L>47 then R=R+3 if L>56 then R=R+3
SP3: for AA=7 to 9 step 2 gosub TP1 next AA C=RND(10)/10 if (R>Q) or ((R=Q) and (C>0.4)) then Q=R : F=I : T=L
SP4: return
TP1: G=I+AA : H=I-AA : if (G>64) or ((G+AA)>64) then goto TP2 if ((A(G)=1) or (A(G)=2)) and (A(G+AA)<0) then R=R-8 if H<0 then goto TP3 if (A(G)<0) and (A(H)=0) then R=R+4 if (A(H)=-2) and (A(G)=0) then R=R+4
TP2: if (H<0) or ((H-AA)<0) then goto TP3 if ((A(H)=1) or (A(H)=2)) and (A(H-AA)=-2) then R=R-8
TP3: S=R:G=L+AA:H=L-AA:if G>64 then goto TP5 if H<0 then goto TP4 if (A(G)<0) and ((A(H)=0) or (I=H)) then R=R-10:goto TP4 if (A(H)=-2) and ((A(G)=0) or (I=G)) then R=R-10
TP4: if (G+AA)>64 then goto TP5 if (A(G)<0) and (A(G+AA)=0) then R=R+5+K*10
if ((A(G)=1) or (A(G)=2)) and (A(G+AA)<0) then R=R+4:S=S+4
TP5: if (H<0) or ((H-AA)<0) then goto TP6 if ((A(H)=1) or (A(H)=2)) and (A(H-AA)=-2) then R=R+4:S=S+4
TP6: if R>S then R=S return
end
man: rem draw man in (x,y) 2d_circle bord+(2*x+1)*case2,bord+(2*y+1)*case2,rayon return
square: 2d_rectangle bord+x*case,bord+y*case,bord+(x+1)*case,bord+(y+1)*case return
move: rem display the player's move rem x and y from n if n=2 then x=1:y=0 if n=4 then x=3:y=0 if n=6 then x=5:y=0 if n=8 then x=7:y=0 if n=9 then x=0:y=1 if n=11 then x=2:y=1 if n=13 then x=4:y=1 if n=15 then x=6:y=1 if n=18 then x=1:y=2 if n=20 then x=3:y=2 if n=22 then x=5:y=2 if n=24 then x=7:y=2 if n=25 then x=0:y=3 if n=27 then x=2:y=3 if n=29 then x=4:y=3 if n=31 then x=6:y=3 if n=34 then x=1:y=4 if n=36 then x=3:y=4 if n=38 then x=5:y=4 if n=40 then x=7:y=4 if n=41 then x=0:y=5 if n=43 then x=2:y=5 if n=45 then x=4:y=5 if n=47 then x=6:y=5 if n=50 then x=1:y=6 if n=52 then x=3:y=6 if n=54 then x=5:y=6 if n=56 then x=7:y=6 if n=57 then x=0:y=7 if n=59 then x=2:y=7 if n=61 then x=4:y=7 if n=63 then x=6:y=7 return
Pour jouer, tu as les pions rouges. Tu cliques sur le pion rouge à déplacer, puis tu cliques sur la case vide où le pion doit aller. L'ordinateur joue et ça recommence. _________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Panoramic pour Android. Dim 16 Nov 2014 - 12:33 | |
| Bonjour.
Pour ma part, j'ai téléchargé le fichier apk sur mon PC. Ensuite, je l'ai envoyé par mail à mon smartphone, puis téléchargé la pièce jointe du mail.
Eh bien, tout fonctionne parfaitement.
J'ai donc pû tester les débuts de Panoramic sous Android. | |
| | | Contenu sponsorisé
| Sujet: Re: Panoramic pour Android : instantané du développement | |
| |
| | | | Panoramic pour Android : instantané du développement | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |