Poradte s porovnavanim poli – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Poradte s porovnavanim poli – Java – Fórum – Programujte.comPoradte s porovnavanim poli – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Vtipi
~ Anonymní uživatel
3 příspěvky
27. 12. 2007   #1
-
0
-

ahoj,snazim se vytvorit hru Mastermind,kde hrac hada barvu a pozici hribecku,mam udelany procedury na porovnani barev a pozic a pote vypsani co je a neni spravne(zadava se to vsechno v podobe cisel 1-4), potreboval bych poradit jak to dat do cyklu,aby se to opakovalo dokud pole barva1 a pozice1 nebudou shodna s puvodnimi poli barva a pozice, poradi nekdo? (par pokusu sem dal ve zdrojaku do poznamek,ale nefunguji) popr. kdyby mel nekdo chut mi to tam pripsat .. predem vsem moc diky

zdrojak je :

import java.util.*;

public class sem_new {
static {Locale.setDefault(Locale.US);}

public static void main(String[] args ) {
Scanner scan=new Scanner(System.in);
int promenna1=4;

Random rd=new Random();
int [] pozice=new int[4];
int [] barva=new int[4];

for(int i=0;i<4;i++) pozice[i]=rd.nextInt(4)+1;
for(int j=0;j<4;j++) barva[j]=rd.nextInt(4)+1;

for(int i=0;i<4;i++) System.out.println (pozice[i]); // vypis pozic
for(int j=0;j<4;j++) System.out.println (barva[j]); // vypis barev



//do {

int[] barva1 = hadani_barvy(promenna1);
odpoved_barvy(barva,barva1);


int[] pozice1 = hadani_pozice(promenna1);
odpoved_pozice(pozice,pozice1);



//}

//while ( for (int i=0;i<4;i++) ( (pozice[i]) == (pozice1[i]) ) && ( (barva[i]) == (barva1[i]) ) );
//while { ( pozice[] == pozice1[] ) && ( barva[] == barva1[] )};
//while (pozice==hadani_pozice(promenna1) && barva==hadani_barvy(promenna1));


System.out.print("vyhrali jste!");
}

static int[] hadani_barvy(int a) {
Scanner sc = new Scanner(System.in);
int[] m = new int[a];
for (int i=0; i<(4); i++){
System.out.print ("zadejte barvu "+(i+1)+". prvku \n");
m[i] = sc.nextInt();}


return m; //osetrit,kdyz dam cislo >4 nebo <0
}

static int odpoved_barvy (int [] barva,int [] barva1){
int x=0;
for (int i=0;i<4;i++) {if (barva[i]==barva1[i]) System.out.println("barva "+(i+1)+". je spravne");
else System.out.println("barva "+(i+1)+". neni spravne");}
return x;
}

static int[] hadani_pozice(int a) {
Scanner sc = new Scanner(System.in);
int[] m = new int[a];
for (int i=0; i<(4); i++){
System.out.print ("zadejte pozici "+(i+1)+". prvku \n");
m[i] = sc.nextInt();}


return m; //osetrit,kdyz dam cislo >4 nebo <0
}

static int odpoved_pozice (int [] pozice,int [] pozice1){
int x=0;
int pom = 0;
for (int i=0;i<4;i++) {if (pozice[i]==pozice1[i]) {System.out.println("pozice "+(i+1)+". je spravne"); pom = pom+1;}

else System.out.println("pozice "+(i+1)+". neni spravne");}
return x;
}

}

Nahlásit jako SPAM
IP: 82.100.52.–
Reklama
Reklama
Jura
~ Anonymní uživatel
634 příspěvků
28. 12. 2007   #2
-
0
-

Zdravím,

co si třeba zkusit napsat metodu pro porovnání polí? Nebo pohledat, zda Java nějakou nemá.

Jinak můžeš to zkusit třeba takto:



public static boolean compareIntArray(final int [] a,final int [] b)
{ if(a.length != b.length ) return false;
for(int i = 0; i < a.length; ++i)
if(a[i] != b[i]) return false;
return true;
}


A tu část kódu, která se má opakovat uzavřít do cyklu:



....
do
{
// osetrit pripadne invarianty
...
}while(!compareIntArray(barva, pozice) && !compareIntArray(barva1, pozice1));
...

Nahlásit jako SPAM
IP: 85.207.192.–
Jura
~ Anonymní uživatel
634 příspěvků
28. 12. 2007   #3
-
0
-

Kua, namísto while(!compareIntArray(barva, pozice) && !compareIntArray(barva1, pozice1)); má být nejspíše:



while(!compareIntArray(barva, barva1) && !compareIntArray(pozice, pozice1)); // případne si to uprav, jak potřebuješ

Nahlásit jako SPAM
IP: 85.207.192.–
vtipi
~ Anonymní uživatel
3 příspěvky
28. 12. 2007   #4
-
0
-

diky,akorat mi to pise u toho while chybu : can not find symbol barva1 a pozice1 , pze ty pole vlastne zadavam az kdyz se to spusti .. co s tim ? :) kdyztak muzete kdokoliv kdo vite napsat na icq: 225620319 ,diky moc

Nahlásit jako SPAM
IP: 82.100.52.–
Jura
~ Anonymní uživatel
634 příspěvků
28. 12. 2007   #5
-
0
-

Máš ty proměnné deklarované před tím cyklem??

Nahlásit jako SPAM
IP: 85.207.192.–
Vtipi
~ Anonymní uživatel
3 příspěvky
28. 12. 2007   #6
-
0
-

To Jura: nemam,je to az v cyklu,kdyztak pls napis na icq bo nemohl bys mi to upravit a postnout sem ? pze to nemuzu nadefinovat pred cyklem a pak znovu to jako by prepsat v cyklu ne ? dik

Nahlásit jako SPAM
IP: 82.100.52.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 69 hostů

Podobná vlákna

Hledání v poli polí — založil jaxx19

Největší v poli polí — založil Noneus

VŠ- poradte — založil fixxa

Poradte — založil dalaman

Poradte — založil Jonxix

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý