Diskuze: Nezorané pole
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Osobne bych se zameril na toto:
if (hernimapa [q][e] == hernimapa [x][y])
nemelo by tam byt spis:
if (q == x && e == y)
tedy jestli dobre chapu. a celkove by jsi to mel udelat trochu jinak:
pokud ti jde jen o vypsani pozice (ne celou cestu), tak ti staci:
for (int q = 0; q <10; q++)
{
for (int e = 0; e <10; e++)
{
if(q == x && e == y) System.out.print("1");
else System.out.print("0");
}
System.out.println(" ");
}
a cele pole vubec nepotrebujes.
pokud chces udrzovat cestu pak to musi vypadat takto:
public class Hrac {
public int x = 5;
public int y = 5;
private Scanner sc = new Scanner(System.in, "Windows-1250");
int hernimapa[][] = new int [10][10];
public void pohyb()
{ String vstup = sc.nextLine();
switch (vstup)
{
case "w":
y++;
break;
case "s":
y--;
break;
case "a":
x--;
break;
case "d":
x++;
break;
}
hernimapa[x][y] = 1;
}
public void vykresli()
{
for (int q = 0; q <10; q++)
{
for (int e = 0; e <10; e++)
{
System.out.print(hernimapa[q][e] + " ");
}
System.out.println(" ");
}
}
}
Díky moc, už to funguje. Ještě jeden dotaz, jak udělat aby když stiknu
"w" se to vypsalo na jednom a tom samém poli a nemusel jsem odenterovávat.
Zatím to funguje tak že se svoji postavičkou honíte druhou a když ju
chytnete, vyhrál jste 
package javatrenink;
import java.util.Random;
import java.util.Scanner;
/**
*
* @author Olda
*/
public class Hrac {
private int x = 5;
private int y = 5;
public int r = 2;
public int t = 2;
private Scanner sc = new Scanner(System.in, "Windows-1250");
Random random = new Random();
int hernimapa[][] = new int [10][10];
public void pohyb()
{ String vstup = sc.nextLine();
switch (vstup)
{
case "w":
setX(getX() - 1);
break;
case "s":
setX(getX() + 1);
break;
case "a":
setY(getY() - 1);
break;
case "d":
setY(getY() + 1);
break;
}
if (getX()>9)
setX(getX() - 1);
else if (getX()<0)
setX(getX() + 1);
if (getY()>9)
setY(getY() - 1);
else if (getY()<0)
setY(getY() + 1);
}
public void vykresli()
{
for (int q = 0; q <10; q++)
{
for (int e = 0; e <10; e++)
{
if (q == getX() && e == getY())
hernimapa [q][e] = 1;
else if (q ==r && e == t)
hernimapa[q][e] = 2;
else
hernimapa[q][e] = 0;
System.out.print(hernimapa[q][e] + " ");
}
System.out.println(" ");
}
}
public void pohybprotivnika()
{
int rngpohyb = random.nextInt(4);
switch(rngpohyb)
{
case 0:
r--;
break;
case 1:
r++;
break;
case 2:
t--;
break;
case 3:
t++;
break;
}
if (r>9)
r--;
else if (r<0)
r++;
if (t>9)
t--;
else if (t<0)
t++;
}
public boolean sezral ()
{
return getX()==r && getY()==t;
}
/**
* @return the x
*/
public int getX() {
return x;
}
/**
* @param x the x to set
*/
public void setX(int x) {
this.x = x;
}
/**
* @return the y
*/
public int getY() {
return y;
}
/**
* @param y the y to set
*/
public void setY(int y) {
this.y = y;
}
}
main:
package javatrenink;
import java.util.Random;
import java.util.Scanner;
/**
*
* @author Olda
*/
public class JAVAtrenink {
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
Hrac Olda = new Hrac();
Random rng = new Random();
int f;
Scanner sc = new Scanner(System.in, "Windows-1250");
int vstup1 = Integer.parseInt(sc.nextLine());
Olda.setX(vstup1);
int vstup2 = Integer.parseInt(sc.nextLine());
Olda.setY(vstup2);
while (true)
{
f = rng.nextInt(2);
Olda.vykresli();
Olda.pohyb();
if (f == 1)
Olda.pohybprotivnika();
if (Olda.sezral())
{
System.out.println("VYHRÁL JSI!");
break;
}
}
Olda.vykresli();
}
}
Ještě jeden dotaz, jak udělat aby když stiknu "w" se to vypsalo na jednom a tom samém poli a nemusel jsem odenterovávat.
Pokud vím tak nijak, tohle v 'čisté' Javě udělat nejde. Existují knihovny jako <a href='https://sourceforge.net/projects/javacurses/'>JCurses</a> ale než se učit tohle, to bych ti radši doporučil vykašlat se na konzoli a předělat to rovnou pro Swing nebo JavaFX.
Zobrazeno 5 zpráv z 5.