Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

RandomFrom i ponistavanje polja u array

[es] :: Pascal / Delphi / Kylix :: RandomFrom i ponistavanje polja u array

[ Pregleda: 3585 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ventura

Član broj: 32
Poruke: 7781
*.vdial.verat.net.



+6455 Profil

icon RandomFrom i ponistavanje polja u array14.11.2004. u 12:18 - pre 235 meseci

Da li mozete da mi pomognete sa sledecim:
Imam jedan array:

Karte: array[1..14] of String = ('1','2','3','4','5','6','7','8','9','X','J','Q','K','A');

Zeleo bi da iskoristim RandomFrom funkciju da izvucem neko nasumicno polje (odnosno kartu) iz array-a.

E sada, dali je moguce nakon sto izvucem recimo 'X', da ja to polje u array-u ponistim? i da umesto X upisem recimo '0' ili '-', i kako to izvesti?
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 13:33 - pre 235 meseci
Zasto bas RandomForm ? Mozes sa Random() samo...

Evo primer :
Code:

var
  RndNum : Integer;
begin
  Randomize;
  RndNum := Random(14) + 1; // Slucajan broj od 1 do 14
  MessageBox(0, PAnsiChar(Karte[RndNum]), nil, mb_OK); // Prikazimo kartu
  Karte[RndNum] := '0'; // I na kraju upisimo '0' u to polje
end;

 
Odgovor na temu

ventura

Član broj: 32
Poruke: 7781
*.vdial.verat.net.



+6455 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 13:53 - pre 235 meseci
Onda array gubi znacenje... Dakle poenta je sledeca

u Array-u se nalaze sve karte iz Spila, kada se neka karta izvuce (RandomFrom), ta karta vise ne postoji u spilu (taj field u array je setovan na 0).
Ja hocu to da izvedem ali ne umem kako..
Palo mi je na pamet da po izvlacenju karte uradim search&replace u array-u, i to bi radilo posao, ali nazalost ja to u deplhiju ne umem da uradim, pa sad trazim po netu kako to izvesti.

 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 14:13 - pre 235 meseci
Citat:
u Array-u se nalaze sve karte iz Spila, kada se neka karta izvuce (RandomFrom), ta karta vise ne postoji u spilu (taj field u array je setovan na 0).


Onaj kod gore radi bas to ??
 
Odgovor na temu

ventura

Član broj: 32
Poruke: 7781
*.vdial.verat.net.



+6455 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 14:18 - pre 235 meseci
probel je u tome sto ceo array izgleda ovako:

Code:

Karte: array[1..14] of String = 
('1','2','3','4','5','6','7','8','9','X','J','Q','K','A',
'1','2','3','4','5','6','7','8','9','X','J','Q','K','A',
'1','2','3','4','5','6','7','8','9','X','J','Q','K','A',
'1','2','3','4','5','6','7','8','9','X','J','Q','K','A');


znaci to je spil od 56 karata, sa tvojim metodom mozes samo prvih 14 da prepisujes, to sam odmah video, ali to nije primenljivo kad imas 1, 2, 3, 4 ili n spilova.

Dakle, trebala bi da se koristi neka fleksibilnija metoda
 
Odgovor na temu

Milos Stojanovic
Belgrade

Član broj: 10343
Poruke: 1864
*.nat-pool.bgd.sbb.co.yu.

ICQ: 282954730
Sajt: www.sietf.org


+7 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 14:23 - pre 235 meseci
A zašto ne bi "promešao" špil, i onda izvlačio karte redom?
Code:

var
  Rnd,i : Integer;
  p : string;
begin
  Randomize();
  for i := 1 to 14 do
  begin;
     Rnd := Random(i) + 1;
     p := Karte[i];
     Karte[i] := Karte[Rnd];
     Karte[Rnd] := p;
   end;

// I onda negde u kodu
//   for i := 1 to 14 do
// Izvuci I-tu kartu
     
end;

ex. trooper
Oh goody... it's my Illudium PU-36 Explosive Space Modulator!
Softversko Inženjerstvo
♪♫♪
 
Odgovor na temu

ventura

Član broj: 32
Poruke: 7781
*.vdial.verat.net.



+6455 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 14:33 - pre 235 meseci
trooper: radi se o ukupno 6 spilova odnosno 336 karata iliti elemenata array-a, ali je fora u tome sto u tom array-u MORA da bude 24 od svake karte da bi racunica bila tacna na kraju...
ovaj tvoj kod ne pazi na to....

dali ima neka funkcija koja radi search u array i vraca poziciju polja?
 
Odgovor na temu

Milos Stojanovic
Belgrade

Član broj: 10343
Poruke: 1864
*.nat-pool.bgd.sbb.co.yu.

ICQ: 282954730
Sajt: www.sietf.org


+7 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 14:57 - pre 235 meseci
Da li tebi treba algoritam koji, kada se izvadi jedna karta od jedne vrste, više ne može da se vadi ta vrsta karata, ili može? Ako može, onda ovaj moj kod radi, jer on meša proizvoljan broj karata. Osim ako ti nije bitan redosled karata u špilu/arrayu.
Da li ti je sve jedno da li imaš array:
1,2,3,4,5,6,7,8,9,10,J,Q,K,1,2,3,4....
ili
J,4,9,1,8,7,K,2,10,Q,6,3,5...
?
ex. trooper
Oh goody... it's my Illudium PU-36 Explosive Space Modulator!
Softversko Inženjerstvo
♪♫♪
 
Odgovor na temu

ventura

Član broj: 32
Poruke: 7781
*.vdial.verat.net.



+6455 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 15:03 - pre 235 meseci
Nije mi bitan redosled, ali mi je bitno da kad naprimer izvucem 24 karte od jedne vrste (8 recimo, nebitno koja je boja) da vise u spilu ne postoji nijedna karta 8, vec da je sve ravnomerno raporedjeno, bas kao sto bi bilo u pravom spilu
 
Odgovor na temu

Milos Stojanovic
Belgrade

Član broj: 10343
Poruke: 1864
*.nat-pool.bgd.sbb.co.yu.

ICQ: 282954730
Sajt: www.sietf.org


+7 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 15:10 - pre 235 meseci
Pa ovo moje meša "ravnomerno", baš kao što bi se mešalo u pravom špilu.
Žao mi je, ali zaista ne razumem. Ako možeš malo bolje da objasniš pa da uradimo to kako treba.
ex. trooper
Oh goody... it's my Illudium PU-36 Explosive Space Modulator!
Softversko Inženjerstvo
♪♫♪
 
Odgovor na temu

ventura

Član broj: 32
Poruke: 7781
*.vdial.verat.net.



+6455 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 15:15 - pre 235 meseci
Ovako, pokusavam da napravim igru BlackJack, koja se igra sa 6 spilova.

Znaci, broj karata je konacan, kao i broj deljenja.

Broj karata je 336, znaci po 24 karte od svakog broja (ne uzimajuci u obzir boju).

Ideja mi je bila da svih 336 karata smestim u array, i po 'izvlacenju' da ih ponistim u array-u, upisijuci nuli umesto karte, i ako je pri sledecem izglacenju izvucena 0, onda bi reeat petljom ponovio izvlacenje sve dok ne izvucem 'svezu' kartu, koju cu iskoristiti i potom na isti nacin ponistiti.
I tako u krug.

Jedina stvar koju je neophodno paziti je da broj i raspored karata unutar spila nije random, vec se u spilu nalazi 24 karte od svakog broja, ukupno 336. Redosled karata je proizvoljan i nema nekog posebnog znacaja.

 
Odgovor na temu

Milos Stojanovic
Belgrade

Član broj: 10343
Poruke: 1864
*.nat-pool.bgd.sbb.co.yu.

ICQ: 282954730
Sajt: www.sietf.org


+7 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 15:33 - pre 235 meseci
Nezgodno je postavljati 0. Jer recimo ako naiđeš na 0 pa ponovo pozoveš random dok ne naiđeš na polje koje nije nula, to može da potraje jer može da se desi da te random stalno vraća na polja koja su 0.

Dakle tebi je nebitan raspored karata unutar tog niza od 336, bitno ti je koliko ima koje karte u tom nizu? Pa onda je u redu ovo što sam ja gore napisao. Šta ovo moje radi? Polazi od niza u kome su karte redom raspoređene, i zatim za svaku kartu zameni mesto te karte i neke random karte u špilu. Dakle broj karata od svake vrste ostaje isti, jer su svi elementi niza i dalje tu. Ali nakon ove zamene mesta kartama ti imaš pomešan (čak bi se usudio da kažem i homogeno) špil. Tako da više nema potrebu da uzimaš kartu sa random mesta iz niza, već je dovoljno da uzimaš karte redom. Ne znam kako ovo bolje da objasnim. Jednostavno si promešao karte kao što bi radio u pravom životu, i uzimaš karte sa vrha špila ne vraćajući ih u njega, baš kao što bi radio u pravom životu.
ex. trooper
Oh goody... it's my Illudium PU-36 Explosive Space Modulator!
Softversko Inženjerstvo
♪♫♪
 
Odgovor na temu

ventura

Član broj: 32
Poruke: 7781
*.vdial.verat.net.



+6455 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 15:48 - pre 235 meseci
Tacno je da tvoj kod mesa, ali on i dalje mesa istu kolicinu karata, a ja recimo kad izvucem jednog kralja, vise nemam 24 kralja u spilu, vec je ostalo samo 23 kralja, i on od tih mora onda da izvlaci
 
Odgovor na temu

Milos Stojanovic
Belgrade

Član broj: 10343
Poruke: 1864
*.nat-pool.bgd.sbb.co.yu.

ICQ: 282954730
Sajt: www.sietf.org


+7 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 15:55 - pre 235 meseci
dakle tebi treba, da kad od 24 kralja izvučeš jednog kralja , da ih i dalje ima 24, tj. da odradiš izvlačenje sa vraćanjem?
ex. trooper
Oh goody... it's my Illudium PU-36 Explosive Space Modulator!
Softversko Inženjerstvo
♪♫♪
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
*.vdial.verat.net.

Sajt: www.diy-fever.com


+1 Profil

icon Re: RandomFrom i ponistavanje polja u array14.11.2004. u 18:56 - pre 235 meseci
ako trebas da izbacujes iz niza mozda je malo bolje da koristis listu umesto niz. a moze i dinamickim nizom.

Code:

var a: array of char;
...
SetLength(a, 20);
//da izbacis k-ti ide
for i := k to High(a) do //indexiranje ide od 0
 a[i - 1] := a[i];
SetLength(a, Length(a) - 1);
...

Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: RandomFrom i ponistavanje polja u array

[ Pregleda: 3585 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.