30

C'est a peu près ce que je donne au ./13 non ?
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

31

Pas à peu près, exactement (sauf qu'il faut commencer à numéroter les lignes et les colonnes à 0 et pas à 1 comme le fait arnaud) happy
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

32

Par contre, arnaud, il n'y a pas (9*9)/2 = 40 cases possibles mais 41 (enfin c'est un détail)
l'algo de bobti89 fait bien un rand(40) mais ça tire entre 0 et 40 donc il y a bien 41 possibilités happy
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

33

ben en touc cas la methode de Ethaniel marche super bien ya pas mieux!! encore merci

34

euh àmha la méthode de bobti89 est mieux (plus rapide) mais bon la méthode d'Ethaniel marche aussi c'est sûr...
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

35

 sprg20:
	moveq	#5,d0	; nombre entre 1 et 5
	bsr	rand
	add.w	#1,d0
	lsl.w	#1,d0	; entre 2 et 10
	rts
 sprg2:
	clr.b	erreur	; tire au hasard tout en intercalant les cases
	moveq	#10,d0	; en effet, le blus petit bateau faisant deux cases de
	bsr	rand	; long, il ne sert à rien de tirer sur toutes les cases
	move.w	d0,y
	add.w	#1,y	; entre 1 et 10
	bsr	sprg20
	move.w	d0,x
	move.w	y,d0
	add.w	tircte,d0
	btst.b	#0,d0
	beq	sg2
	sub.w	#1,x
 sg2:
	bsr	sprg3	; vérifie si le tir est valide
	tst.b	erreur
	bne	sprg2
	clr.w	rtir
	rts


(tircte est une variable tirée au sort au début de la partie, et qui vaut 0 ou 1, ce qui permet de faire aléatoirement l'un ou l'autre des deux modes de tirs intercalés possibles (disons, celui qui tire en (0,0) et l'autre))

Voilà ce que j'utilise pour les tirs intercallés de ma propre bataille navale. Je n'ai pas cherché à faire dans la finnesse, et en pratique le temps pris par les collisions de tir ne se remarque pas, même s'il est potentiellement infini.
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

36

je comprends rien à l'asm cheeky
sinon évidemment le problème de l'algo de bobti89 est qu'il ne marche pas pour les plateaux à nombre de cases pair, mais sinon ça me semble optimal non ?
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

37

en pseudo code:

sprg20:
 x = rand(5)
 x = x+1
 x = x*2
 return x

sprg2:
 erreur = 0
 y = rand(10)
 y = y+1
 x = sprg20()
 y = y+tircte
 si y est impair: x = x-1
 si case occupée: recommence
 rtir = 0
 return


en gros ça revient à
y = rand(10)+1+tircte;
x = (rand(5)+1)*2-y&1;

(ma grille va de 1 à 10 inclus, tircte vaut 0 ou 1)

d'ailleurs c'est vachement crade tout ça #berk#
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

38

on dirait que mon y peut sortir de la grille, mais c'est pas grave y'a une protection trigic
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

39

ta grille est numérotée à partir de (1,1) ? byzarre comme idée
mais euh si tircte vaut 1 tu ne testes aucun tir sur la première ligne trifus faudrait réduire ton y modulo 10 (enfin avec le décalage de 1)
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

40

ah le voilà le bug, j'imagien que tircte doit s'ajouter plutôt à x qu'à y pour décaller les cases alternées
sinon pour le tableau, en fait c'est un 12x12 et les cases exterieures ont un masque qui est considéré à la fois comme "case sur laquelle il y a un bateau" et "case où l'on a tiré" pour simplifier la détection des sorties de grille

enfin l'idée est là quoi
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

41

ok
oui c'est ça ; ben pour un nombre de cases pair c'est la solution la plus simple oui, puisque tu ne peux pas prendre toutes les cases dans l'ordre et tirer parmi celles d'ordre pair (ou impair) comme on peut le faire quand le nombre est impair ^^ (je sais pas si ma phrase est claire triso)
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

42

lol je fai parielle que toi Ximoon mais avec la methode de Ethaniel!!
et la methode de Bobti ne marche pas!!

43

Elle devrait marcher... on peut voir ton code ? tu as dû te tromper quelque part happy
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

44

lol mon code ben en tou ca kan je met ca de bobti
int a = random(9*9 / 2)*2 ;
x = a % 9 ;
y = a / 9 ;
ca me fait une boucle infini apres 2 tirs aleatoir

45

J'espere que tu inclus aussi le "a = random(9*9 / 2)*2 ;" dans ta boucle ?
avatar
I'm on a boat motherfucker, don't you ever forget

46

confus
mais y a pas de boucle, il ne peut donc pas y avoir de boucle infinie... et en plus ce code fait tout le temps la même chose (enfin, c'est un random, donc pas exactement, mais il ne change pas de comportement après deux appels) ; donne au moins la fonction en entier parce que l'erreur ne peut pas venir de ça happy (et puisque tu dis qu'il y a une boucle, poste le code de la boucle en entier ^^)
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

47

lol non mais le code d'Ethaniel fonctionne super bien!!

48

= random ( 9 ) ; } while ( !((x+y) % 2) ) ;
euh ben c'est ce qui m'intrigue... parce que :do 
{ x = random ( 9 ) ; 
  y

9 ;
et :int a = random (41) ;
x = a % 9 ;
y = a / 
ça fait exactement la même chose (de façon différente, bien sûr, mais ça aboutit au même résultat)
bon en fait il faut effectivement random (41) (et pas random (40)), je viens de voir dans la doc que random de (n) ne tire que des nombres *strictement* inférieurs à n triso, mais ça change juste que sinon la dernière case ne peut pas être choisie et donc ça n'explique rien happy
Je pense donc qu'il y a un pb ailleurs dans ton prog happy
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

49

La solution de bobti89 m'a l'air correcte et optimale, à condition de mettre 41 et pas 9*9/2==40 dans le random.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

50

Eu la solution de bobti89 ne fonctionne pas même avec random(41). Enfin il fonctionne ca depant ce que l'on veut mais il ne tire pas une case sur 2 il remplis juste la moitiée haute du plateaux.

51

./49 > pencil
./50 > trifus
hum... zen... arrête de raconter n'importe quoi SANS POSTER TON CODE parce que l'algo de bobti89 EST correct (au problème près du 40/41), donc si ça ne fait pas ce que tu veux ça ne vient pas de là et comment veux-tu qu'on comprenne le problème si on n'a pas le code ???
tes posts sont du charabia, j'espère que tu t'en rends compte... tu parles de boucle infinie à propos d'un algo qui n'utilise pas de boucle triso, et maintenant tu dis que ça remplit la moitié haute du plateau alors que ce code ne fait que tirer UNE case ; autrement dit tu parles de ce que fait ta fonction *entière* mais nous on la connaît pas ta fonction, on connaît juste les 3 lignes de code qu'on t'a filées !! donc ça ne veut rien dire pour nous.
jà par ailleurs une variable qui s'appelle a dans la même fonction ? si c'est le cas une solution toute simple est de mettre des accolades autour du code, comme ceci :{ int a = random (41) ; x = a % 9 ; y = a / 9 ; }Rassure-moi t'as pas copié-collé le code en ayant dé(mais évidemment tu peux aussi changer le nom de la variable).
Bon sinon, maintenant, poste du code ou alors boucle-la, merci happy
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

52

Ok alors voic avec quoi j'ai teste
#include <tigcclib.h>

void _main(void)
{
short a=0,x=0,y=0;
clrscr();
while(!OSCheckBreak())
{
a = random (41) ;
x = a % 9 ;
y = a / 9 ;
DrawPix(x,y,A_NORMAL);
} }

53

J'ai l'impression que vous oubliez un *2...

a = random(41) * 2
x = a % 9
y = a / 9
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

54

oui effectivement il manque un *2 triso
dsl couic
ceredede > ok donc en fait sans le *2 ça tirait au pif une case sur la première moitié du plateau, au lieu de parmi les cases marquées X ; et la raison pour laquelle ça « remplit » cette moitié, c'est que tu exécutes ça dans une boucle, mais comme c'est très rapide ça a largement le temps d'avoir tiré toutes les cases avant que tu t'en aperçoives ^^. Il faudrait que tu ajoutes un ngetchx() dans ta boucle pour que ça ne tire qu'une case à la fois et que tu puisses voir ce qui se passe smile
void _main(void)
{
  short a=0,x=0,y=0;
  clrscr();
  while(!OSCheckBreak())
  {
    a = random (41) * 2;
    x = a % 9 ;
    y = a / 9 ;
    DrawPix(x,y,A_NORMAL);
    ngetchx();
  }
}
là tu appuies sur une touche pour chaque nouveau tirage
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

55

Oui ok la ça marche, mais le seul truc c'est que ca tire toujour les meme on ne peut pas avoir 2 variante comme avec les methodes precedente si?

56

ah... ben si, il faut remettre le 40 et ajouter 1 (tu remplaces "a = random (41) * 2;" par "a = random (40) * 2 + 1;"), et ça te donne la variante
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

57

hum ou alors pour randomiser cette variante
a = random (41) * 2-1

58

j'ai pas vraiment reflechi à ce que ca pouvait donner...? peu être, sauf que dans ce cas tu as un tableau defini une fois pour toute, et tu tire les cases présentes dans le tableau, ca va plus vite à modifier si tu as besoin de changer quelque chose, et puis moi les équations mathématiques... tsss
Arnaud

59

arnaud > ben en fait c'est tout con, si tu numérotes les cases ligne par ligne en partant d'en haut à gauche sur un plateau carré de taille n, il y a n*n cases, et pour trouver la position de la case numéro k, tu fais une division de k par n ; le quotient te donne le numéro de la ligne et le reste le numéro de la colonne (si tu fais un petit dessin c'est assez évident hehe).
Ensuite, l'idée quand n est impair consiste à dire qu'on veut tirer uniquement parmi les cases dont le numéro est pair, voilà pourquoi on fait un random sur la moitié du nombre de cases (plus un, parce que le nombre de cases est impair) et qu'on le multiplie par deux ; et pour l'avoir parmi les cases de numéro impair il suffit de décaler ensuite de 1.
Mais l'inconvénient est que ça ne marche pas pour n pair, en effet dans le cas n pair il y a un problème au changement de ligne : quand la dernière case d'une ligne est noire, alors la première case de la ligne suivante aussi est noire ; et inversement si l'une est blanche l'autre aussi, donc avec cette numérotation on ne peut pas dire qu'on tire parmi les cases de numéro pair ou impair.
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

60

Kevin Kofler a écrit :
La solution de bobti89 m'a l'air correcte et optimale, à condition de mettre 41 et pas 9*9/2==40 dans le random.
Je dirais même qu'elle est correcte et optimale ...
J'ai écrit :
[...] l'algorithme de bobti89 marchera du premier coup ... à un petit détail près.
Comme on a a = 2 * rand ( 40 ) ;, la toute dernière case, dans le coin x=y=8 (soit a == 80), ne sera jamais choisie.
Il faut donc a = 2 * rand ( 41 ) ; ...
Plus exactement, dans la parenthèse du rand, il faut arrondir à la valeur entière supérieure le résultat (Xmax * Ymax / 2) (ça existe, ceil, en C ?).
Et de manière toute aussi générale, je préciserai que la valeur 9 utilisée pour le calcul de x et y correspond en fait à Xmax (Ymax n'intervient que dans le calcul de a).

Ah, tiens, c'est random, la fonction ?
Je croyais que c'était rand ...
De toute façon, je n'y connais rien au C cheeky !
cerede2000 a écrit :
hum ou alors pour randomiser cette variante a = random (41) * 2-1
Faux, tu risques de tirer la case -1 qui est en dehors de ton tableau.
Sally a écrit : [...] a = random (40) * 2 + 1; [...]
C'est comme ça et pas autrement qu'il faut faire.

ses noires (le sous-ensemble contenant la case en bas à gauche) est :int a = 2 * rand ( n*n / 2 ) ; y = a / n ; x = a % n + y % 2 ;Pour un damier n*n avec n pair, l'algorithme pour obtenir les caen bas à droite), c'est :int a = 2 * rand ( n*n / 2 ) + 1 ; y = a / n ; x = a % n - y % 2 ;Pour obtenir les cases blanches (le sous-ensemble contenant la case Les deux différences sont le +1 pour a, et le + ou - y%2.
Ce n'est pas plus compliqué que ça ...

@++
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.