Jednoduchá hra v Javě a problém – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jednoduchá hra v Javě a problém – Java – Fórum – Programujte.comJednoduchá hra v Javě a problém – Java – Fórum – Programujte.com

 

Krulik
~ Anonymní uživatel
9 příspěvků
28. 4. 2012   #1
-
0
-

Zdravím,

Dělám jednoduchou hru v Javě. Funguje na jednoduchém principu. Uživatel myslí na číslo od jedné do deseti a poté ho zadá do TexFieldu. Program má po stisknutí buttonu pomocí podmínky zjistit, zda se uživatelovo číslo shoduje s tím náhodně vygenerovaným, který vytvořil program. Debugger nehlásí žádnou chybu, ale přece se nic nevypíše... 

package krulik.tode.cz;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.util.Random;


import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class ChytniCislo {

	/**
	 * Author | Daniel Krůl
	 */
	public static void main(String[] args) {
		JFrame okno = new JFrame("Chytni číslo");
		final JButton Tlacitko = new JButton("Hotovo");
		final JTextField vysledek = new JTextField("");
		JLabel text = new JLabel("<html><font color='#00CC66' align='center' size='+1'>Vítejte v této minihře Chytni Číslo!</font>  <font>Myslete na číslo od 1 do 10 a napište ho...</font></html>", JLabel.CENTER);
		final JLabel dohromady = new JLabel("Výsledek...");
		// NÁHODNÉ ČÍSLO = VYGENEROVÁNÍ PROMENNÉ nahCisla[i]
		final Random nahodne_cislo = new Random();
		final int [] nahCisla = new int[10];
		final int i = 0;
		nahCisla[i] = nahodne_cislo.nextInt(10);
		//nahCisla[i] konec
		
		okno.setVisible(true);
		okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		okno.setSize(330, 320);
		okno.setLayout(null);
		okno.setResizable(false);
		okno.setLocationRelativeTo(null);

		Tlacitko.setBounds(110, 100, 100, 50);
		vysledek.setBounds(110, 60, 100, 25);
		text.setBounds(0, 0, 330, 50);
		dohromady.setBounds(106, 160, 100, 50);
		dohromady.setBackground(Color.white);
		

		Tlacitko.addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e){
			int cele = Integer.parseInt(vysledek.toString());
			if(cele == nahCisla[i]){
				dohromady.setText("Vedle :( Číslo bylo:" + vypis(nahCisla[i]));
			}else {
				dohromady.setText("Vedle :( Číslo bylo:" + vypis(nahCisla[i]));
			}
	
			}
		});	
		
		okno.add(vysledek);
		okno.add(text);
		okno.add(Tlacitko);
		okno.add(dohromady);
		

	}
	public static int vypis(int arg) {
		int temp = arg;
		return temp;
	}

}
Nahlásit jako SPAM
IP: 109.231.189.–
sakal910
Stálý člen
28. 4. 2012   #2
-
0
-

#1 Krulik
 

int cele = Integer.parseInt(vysledek.toString());

Zkus si ten toString() vypsat a myslím že hned budeš vědět proč :D 

jinak pokud chceš z JTextFieldu získat obsah tak musíš použít vysledek.getText() a ne vysledek.toString() :)

Takže takhle: 

int cele = Integer.parseInt(vysledek.getText());

Metoda toString() ti ve tvém případě vypíše asi tohle:

javax.swing.JTextField[,110,60,100x25,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0 ... atd

Nahlásit jako SPAM
IP: 31.222.8.–
Krulik
~ Anonymní uživatel
9 příspěvků
28. 4. 2012   #3
-
0
-

To mě nenapadlo :D Každopádně díky...

Nahlásit jako SPAM
IP: 109.231.189.–
sakal910
Stálý člen
28. 4. 2012   #4
-
0
-

#3 Krulik
Ještě taková poznámka :) Proč máš nahCisla jako pole když ho vůbec nepoužíváš a vlastně ani nepotřebuješ? A ve tvé hře není možné vyhrát? :D že ti to pořád vypíše vedle:( ? :D:D

Nahlásit jako SPAM
IP: 31.222.8.–
Krulik
~ Anonymní uživatel
9 příspěvků
28. 4. 2012   #5
-
0
-

Samozřejmě to poupravím :D Zatím je to pouze ALFA verze

Nahlásit jako SPAM
IP: 109.231.189.–
sakal910
Stálý člen
28. 4. 2012   #6
-
0
-

#5 Krulik
Asi myslíš BETA verze :) Jestli ti ještě můžu poradit, tak si to zkus celé předělat a hlavně zjednodušit :) Máš tam hodně zbytečného kódu :) A zkus použít Layout manažery :) Jednak se naučíš něco nového a bude to vypadat určitě lépe :)

Nahlásit jako SPAM
IP: 31.222.8.–
Krulik
~ Anonymní uživatel
9 příspěvků
28. 4. 2012   #7
-
0
-

Ještě jedna otázka

Po kliknutí na tlačítko se podmínka vykoná, ale po opětovném stisknutí buttonu to už nelze. Hra se proto musí restartovat a to nechci. Nelze to udělat bez resetu?

Díky 

Nahlásit jako SPAM
IP: 109.231.189.–
sakal910
Stálý člen
28. 4. 2012   #8
-
0
-

#7 Krulik
Podmínka se vykoná po každém stisknutí tlačítka ale výsledek bude pořád stejný, jelikož na startu aplikace přiřadíš jedno číslo a pak už nikde :) vytvoř si metodu na generování toho náhodného čísla a po každém stisknutí tlačítka ji zavolej ať se ti vygeneruje nové "náhodné" číslo :)

Nahlásit jako SPAM
IP: 31.222.8.–
Krulik
~ Anonymní uživatel
9 příspěvků
28. 4. 2012   #9
-
0
-

Jo ták :) Díky!

Nahlásit jako SPAM
IP: 109.231.189.–
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, 18 hostů

Podobná vlákna

Jednoduchá hra? — založil Balaam

Hra v Jave - review kodu — založil Sai85

Moderátoři diskuze

 

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