Avatar
Tomhaus
Člen
Avatar
Tomhaus:

Ahojky, mám problém se zobrazením rámečku u jednoho prográmku v Javě. Máte tu kód:Frame

package solver;

import java.awt.GridLayout;

import javax.swing.JFrame;

import solver.graphics.Screen;

public class Frame extends JFrame {
        private static final long serialVersionUID = 1L;

        public Frame(){
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                setTitle("Sudoku solver");
                setResizable(false);

                init();
        }

        public void init(){
                setLayout(new GridLayout(1, 1, 0, 0));

                Screen s = new Screen();
                add(s);

                pack();

                setLocationRelativeTo(null);
                setVisible(true);

        }

        public static void main(String[] args){
                new Frame();
        }
}

Screen:

package solver.graphics;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.ArrayList;

import javax.swing.JPanel;

public class Screen extends JPanel{
        private static final long serialVersionUID = 1L;

        private static final int WIDTH = 371, HEIGHT = 500;

        private Border b;
        private ArrayList<Border> borders;

        private int xCoor = 5, yCoor = 5;

        public Screen(){
                setFocusable(true);
                setPreferredSize(new Dimension(WIDTH, HEIGHT));

                borders = new ArrayList<Border>();
                borders.add(b);
                b = new Border(xCoor, yCoor, 44);
        }

        public void paint(Graphics g){
        g.clearRect(0, 0, WIDTH, HEIGHT);

        g.setColor(Color.BLACK);
                // svislé čáry
        g.drawLine(4, 4, 4, 366); // levé zesílení, doplnění horního a dolního levého rohového pixelu
        g.drawLine(5, 5, 5, 365);
        g.drawLine(6, 5, 6, 365); // pravé zesílení
        g.drawLine(45, 5, 45, 365);
        g.drawLine(85, 5, 85, 365);
        g.drawLine(124, 5, 124, 365); // levé zesílení
        g.drawLine(125, 5, 125, 365);
        g.drawLine(126, 5, 126, 365); // pravé zesílení
        g.drawLine(165, 5, 165, 365);
        g.drawLine(205, 5, 205, 365);
        g.drawLine(244, 5, 244, 365); // levé zesílení
        g.drawLine(245, 5, 245, 365);
        g.drawLine(246, 5, 246, 365); // pravé zesílení
        g.drawLine(285, 5, 285, 365);
        g.drawLine(325, 5, 325, 365);
        g.drawLine(364, 5, 364, 365); // levé zesílení
        g.drawLine(365, 5, 365, 365);
        g.drawLine(366, 4, 366, 366); // pravé zesílení, doplnění horního a dolního pravého rohového pixelu

                // vodorovné čáry
        g.drawLine(5, 4, 365, 4); // horní zesílení
        g.drawLine(5, 5, 365, 5);
        g.drawLine(5, 6, 365, 6); // dolní zesílení
        g.drawLine(5, 45, 365, 45);
        g.drawLine(5, 85, 365, 85);
        g.drawLine(5, 124, 365, 124); // horní zesílení
        g.drawLine(5, 125, 365, 125);
        g.drawLine(5, 126, 365, 126); // dolní zesílení
        g.drawLine(5, 165, 365, 165);
        g.drawLine(5, 205, 365, 205);
        g.drawLine(5, 244, 365, 244); // horní zesílení
        g.drawLine(5, 245, 365, 245);
        g.drawLine(5, 246, 365, 246); // dolní zesílení
        g.drawLine(5, 285, 365, 285);
        g.drawLine(5, 325, 365, 325);
        g.drawLine(5, 364, 365, 364); // horní zesílení
        g.drawLine(5, 365, 365, 365);
        g.drawLine(5, 366, 365, 366); // dolní zesílení
        }
}

a rámeček kterej se mi nechce zobrazit:

package solver.graphics;

import java.awt.Color;
import java.awt.Graphics;

public class Border {

        private int xCoor, yCoor, width, height;

        public Border(int xCoor, int yCoor, int tileSize){
                this.xCoor = xCoor;
                this.yCoor = yCoor;
                width = tileSize;
                height = tileSize;

        }

        public void draw(Graphics g){
                g.setColor(Color.RED);
                g.fillRect(xCoor * width, yCoor * height, width, height);
                g.clearRect(xCoor * width + 2, yCoor * height + 2, width - 4, height - 4);
        }
}
Odpovědět 3.9.2014 17:26
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Odpovídá na Tomhaus
Ondřej Štorc:

Nikde nevoláš tu metodu draw z třídy Border

Nahoru Odpovědět 3.9.2014 17:48
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Tomhaus
Člen
Avatar
Nahoru Odpovědět 3.9.2014 18:10
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Tomhaus
Jiří Gracík:

Nejspíš v metodě paint.

Nahoru Odpovědět 3.9.2014 18:13
Creating websites is awesome till you see the result in another browser ...
Avatar
Tomhaus
Člen
Avatar
Tomhaus:
borders.draw(g);

připsal sem tohle do paintu, ale není to definovaný pro třídu Screen. Jak to mam definovat? Nějakym privatem?

Nahoru Odpovědět 3.9.2014 18:34
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Odpovídá na Tomhaus
Tomhaus:

Aby jste to správně pochopili, tohle je jen začátek. Rámeček slouží k tomu, aby bylo vidět kam se zadává číslo, které slouží jako vstupní údaj k řešení sudoku. :D

Nahoru Odpovědět 3.9.2014 18:42
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

Tak poradí někdo?

Nahoru Odpovědět 3.9.2014 21:34
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Odpovídá na Tomhaus
Ondřej Štorc:

Neuškodilo by sem napsat co ti to píše za chybu..
btw. jestli ti dělá problém takhle jednoduchý vykreslování tak nevim jak chceš vytvořit celý sudoku...

Nahoru Odpovědět 3.9.2014 21:59
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Ladislav Ondris:

zkus takto:

private Border b =  new Border(xCoor, yCoor, 44);
private ArrayList<Border> borders = borders = new ArrayList<>(); //zkus toto nevytvářet v konstruktoru, ale ještě nad tím, kde máš proměnné (v třídě Screen)

//následně v metodě paint:
for(Border border : borders) {
    border.draw(g);
}
Nahoru Odpovědět 4.9.2014 13:14
Pokud neděláš chyby, nepracuješ na dostatečně těžkých problémech.
Avatar
Odpovídá na Ladislav Ondris
Ladislav Ondris:

pardon..oprava:

private ArrayList<Border> borders = new ArrayList<>();
Nahoru Odpovědět 4.9.2014 13:17
Pokud neděláš chyby, nepracuješ na dostatečně těžkých problémech.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

rámeček se zobrazí, ale za počátek počítá souřadnice [0;0], jak to mam změnit?

Nahoru Odpovědět 4.9.2014 20:38
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

tročku jsem to poupravil v třídě: Border ,voidu grafiky: draw a jede to je si to nastavit podle svýho a je to paráda :D díky kluci

Nahoru Odpovědět 4.9.2014 20:52
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

Potřeboval bych pomoct s posunováním toho rámečku, buď tam mam něco špatně nebo mi tam chybí kus kódu, já nevim. Prosim o radu.

package solver.graphics;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;

import javax.swing.JPanel;

public class Screen extends JPanel{
        private static final long serialVersionUID = 1L;

        private static final int WIDTH = 371, HEIGHT = 500;

        private int xCoor = 3, yCoor = 3;

        private boolean right = false, left = false, up = false, down = false;

        private Border b = new Border(xCoor, yCoor, 44);
        private ArrayList<Border> borders = new ArrayList<>();

        private Key key;

        public Screen(){
                setFocusable(true);
                key = new Key();
                addKeyListener(key);
                setPreferredSize(new Dimension(WIDTH, HEIGHT));

                borders.add(b);

                move();
        }

        public void move(){
                if(right)xCoor += 40;
                if(left)xCoor -= 40;
                if(up)yCoor -= 40;
                if(down)yCoor += 40;
        }

        public void paint(Graphics g){
        g.clearRect(0, 0, WIDTH, HEIGHT);

        g.setColor(Color.BLACK);
                // svislé čáry
        g.drawLine(4, 4, 4, 366); // levé zesílení, doplnění horního a dolního levého rohového pixelu
        g.drawLine(5, 5, 5, 365);
        g.drawLine(6, 5, 6, 365); // pravé zesílení
        g.drawLine(45, 5, 45, 365);
        g.drawLine(85, 5, 85, 365);
        g.drawLine(124, 5, 124, 365); // levé zesílení
        g.drawLine(125, 5, 125, 365);
        g.drawLine(126, 5, 126, 365); // pravé zesílení
        g.drawLine(165, 5, 165, 365);
        g.drawLine(205, 5, 205, 365);
        g.drawLine(244, 5, 244, 365); // levé zesílení
        g.drawLine(245, 5, 245, 365);
        g.drawLine(246, 5, 246, 365); // pravé zesílení
        g.drawLine(285, 5, 285, 365);
        g.drawLine(325, 5, 325, 365);
        g.drawLine(364, 5, 364, 365); // levé zesílení
        g.drawLine(365, 5, 365, 365);
        g.drawLine(366, 4, 366, 366); // pravé zesílení, doplnění horního a dolního pravého rohového pixelu

                // vodorovné čáry
        g.drawLine(5, 4, 365, 4); // horní zesílení
        g.drawLine(5, 5, 365, 5);
        g.drawLine(5, 6, 365, 6); // dolní zesílení
        g.drawLine(5, 45, 365, 45);
        g.drawLine(5, 85, 365, 85);
        g.drawLine(5, 124, 365, 124); // horní zesílení
        g.drawLine(5, 125, 365, 125);
        g.drawLine(5, 126, 365, 126); // dolní zesílení
        g.drawLine(5, 165, 365, 165);
        g.drawLine(5, 205, 365, 205);
        g.drawLine(5, 244, 365, 244); // horní zesílení
        g.drawLine(5, 245, 365, 245);
        g.drawLine(5, 246, 365, 246); // dolní zesílení
        g.drawLine(5, 285, 365, 285);
        g.drawLine(5, 325, 365, 325);
        g.drawLine(5, 364, 365, 364); // horní zesílení
        g.drawLine(5, 365, 365, 365);
        g.drawLine(5, 366, 365, 366); // dolní zesílení

        for(Border border : borders){
                border.draw(g);
                }
        }

        private class Key implements KeyListener {

                public void keyPressed(KeyEvent e) {
                        int key = e.getKeyCode();

                        if(key == KeyEvent.VK_RIGHT && !left){
                                up = false;
                                down = false;
                                right = true;
                        }

                        if(key == KeyEvent.VK_LEFT && !right){
                                up = false;
                                down = false;
                                left = true;
                        }

                        if(key == KeyEvent.VK_UP && !down){
                                right = false;
                                left = false;
                                up = true;
                        }

                        if(key == KeyEvent.VK_DOWN && !up){
                                right = false;
                                left = false;
                                down = true;
                        }

                }

                @Override
                public void keyReleased(KeyEvent e) {
                        // TODO Auto-generated method stub

                }

                @Override
                public void keyTyped(KeyEvent e) {
                        // TODO Auto-generated method stub

                }

        }
}
Nahoru Odpovědět 5.9.2014 21:19
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

Nikdo neví?

Nahoru Odpovědět 6.9.2014 20:39
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

uža si vim proč, já sem přidal třídu do třídy :D

Nahoru Odpovědět 6.9.2014 20:41
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

to ak má bejt, tak nevim v čem mam chybu. :( Poradí někdo prosim?

Nahoru Odpovědět 6.9.2014 20:47
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Odpovídá na Tomhaus
Ladislav Ondris:

A jak chceš ten rámeček posouvat?

Nahoru Odpovědět 6.9.2014 21:08
Pokud neděláš chyby, nepracuješ na dostatečně těžkých problémech.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Tomhaus
Jan Vargovský:

Třída ve třídě nevadí, občas se to používá pro pomocné třídy jako je tahle (říká se jim nested). Btw, proč nevykresuješ v cyklu podle % z výšky/šířky?

 
Nahoru Odpovědět 6.9.2014 21:33
Avatar
Tomhaus
Člen
Avatar
Odpovídá na Ladislav Ondris
Tomhaus:

Posouvat po mřížce sudoku.

Nahoru Odpovědět 6.9.2014 21:44
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Odpovídá na Jan Vargovský
Tomhaus:

nevím, jestli to jde i jinak, ale o tomhle způsobu, který sem použil, vím.

Nahoru Odpovědět 6.9.2014 21:47
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Odpovídá na Ladislav Ondris
Tomhaus:

Poradíš teda jak by se ten rámeček dal posouvat?

Nahoru Odpovědět 7.9.2014 13:10
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

Poradí teda někdo?

Nahoru Odpovědět 7.9.2014 17:54
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Odpovídá na Tomhaus
Ladislav Ondris:

Pořád nevím, jak ho chceš posouvat a proč vlastně?

Nahoru Odpovědět 7.9.2014 20:14
Pokud neděláš chyby, nepracuješ na dostatečně těžkých problémech.
Avatar
Tomhaus
Člen
Avatar
Odpovídá na Ladislav Ondris
Tomhaus:

Tady máš obrázky:

Editováno 7.9.2014 21:44
Nahoru Odpovědět 7.9.2014 21:42
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

A tady máš ten posun:

Nahoru Odpovědět 7.9.2014 21:44
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

Já sem jenom přepsal číslo pozice, ale algoritmus na posouvání tlačítky šipek mi nějak nefachá :D

Editováno 7.9.2014 21:46
Nahoru Odpovědět 7.9.2014 21:45
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

nahoře máš ten celej kód

Nahoru Odpovědět 7.9.2014 21:47
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Odpovídá na Tomhaus
Ladislav Ondris:

Nevidím ten algoritmus..

Tak tam musíš mít nějakou podmínku asi špatně, když ti to pak nejde po změně. Zkus si to sám prohlídnout a hlavně nespolíhat na nás, že ti poradíme. Vím z vlastní zkušenosti... vždycky jsem akorát čekal na odpověď a sám jsem tu chybu ani pořádně nehledal. Takže si to zkus projet očima jen nebo si tam System.out.prin­tln(..); nebo přes debug, abys zjistil, kde je chyba :-)

Nahoru Odpovědět 7.9.2014 22:32
Pokud neděláš chyby, nepracuješ na dostatečně těžkých problémech.
Avatar
Tomhaus
Člen
Avatar
Odpovídá na Ladislav Ondris
Tomhaus:

Ale stejnak díky za radu :)

Nahoru Odpovědět 8.9.2014 17:29
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

už asi vim proč mi to nejede, ono se to musí přece pořád aktualizovat, aby to čekalo než zmáčknu klávesu, jenomže se nic neaktualizuje :DDD

Editováno 8.9.2014 17:51
Nahoru Odpovědět 8.9.2014 17:51
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

Takže musim implementovat Runnable :D díky moc za radu, s tim vypisováním se na to dá přijít :D

Nahoru Odpovědět 8.9.2014 17:54
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

Teď mam problém ukončit cykl. Když dam šipku do prava, tak se v systémovim oknu začne vypysovat true, jenomže se vypisuje nekonečnokrát a já chci aby se vypsalo jen jednou. Jak to mam udělat?

package solver.graphics;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;

import javax.swing.JPanel;

public class Screen extends JPanel implements Runnable {
        private static final long serialVersionUID = 1L;

        private static final int WIDTH = 371, HEIGHT = 500;
        private Thread thread;
        private boolean running = false;

        private int xCoor = 3, yCoor = 3;

        private boolean right = false, left = false, up = false, down = false;

        private Border b = new Border(xCoor, yCoor, 44);
        private ArrayList<Border> borders = new ArrayList<>();

        private int ticks;

        private Key key;

        public Screen(){
                setFocusable(true);
                key = new Key();
                addKeyListener(key);
                setPreferredSize(new Dimension(WIDTH, HEIGHT));

                borders.add(b);

                start();
        }

        public void tick(){
                ticks++;
                if(ticks > 250000){
                        if(right)System.out.println(right);
                        if(left)xCoor -= 40;
                        if(up)yCoor -= 40;
                        if(down)yCoor += 40;
                }
        }

        public void paint(Graphics g){
        g.clearRect(0, 0, WIDTH, HEIGHT);

                // svislé čáry ŠEDÉ
        g.setColor(Color.GRAY);
        g.drawLine(45, 5, 45, 365);
        g.drawLine(85, 5, 85, 365);
        g.drawLine(165, 5, 165, 365);
        g.drawLine(205, 5, 205, 365);
        g.drawLine(285, 5, 285, 365);
        g.drawLine(325, 5, 325, 365);

                // vodorovné čáry ŠEDÉ
        g.drawLine(5, 45, 365, 45);
        g.drawLine(5, 85, 365, 85);
        g.drawLine(5, 165, 365, 165);
        g.drawLine(5, 205, 365, 205);
        g.drawLine(5, 285, 365, 285);
        g.drawLine(5, 325, 365, 325);

                // svislé čáry ČERNÉ
        g.setColor(Color.BLACK);
        g.drawLine(4, 4, 4, 366); // levé zesílení, doplnění horního a dolního levého rohového pixelu
        g.drawLine(5, 5, 5, 365);
        g.drawLine(6, 5, 6, 365); // pravé zesílení
        g.drawLine(124, 5, 124, 365); // levé zesílení
        g.drawLine(125, 5, 125, 365);
        g.drawLine(126, 5, 126, 365); // pravé zesílení
        g.drawLine(244, 5, 244, 365); // levé zesílení
        g.drawLine(245, 5, 245, 365);
        g.drawLine(246, 5, 246, 365); // pravé zesílení
        g.drawLine(364, 5, 364, 365); // levé zesílení
        g.drawLine(365, 5, 365, 365);
        g.drawLine(366, 4, 366, 366); // pravé zesílení, doplnění horního a dolního pravého rohového pixelu
        g.drawLine(3, 5, 3, 365); // pravé  menší zesílení
        g.drawLine(367, 5, 367, 365); // levé menší zesílení

                // vodorovné čáry ČERNÉ
        g.drawLine(5, 4, 365, 4); // horní zesílení
        g.drawLine(5, 5, 365, 5);
        g.drawLine(5, 6, 365, 6); // dolní zesílení
        g.drawLine(5, 124, 365, 124); // horní zesílení
        g.drawLine(5, 125, 365, 125);
        g.drawLine(5, 126, 365, 126); // dolní zesílení
        g.drawLine(5, 244, 365, 244); // horní zesílení
        g.drawLine(5, 245, 365, 245);
        g.drawLine(5, 246, 365, 246); // dolní zesílení
        g.drawLine(5, 364, 365, 364); // horní zesílení
        g.drawLine(5, 365, 365, 365);
        g.drawLine(5, 366, 365, 366); // dolní zesílení
        g.drawLine(5, 3, 365, 3); // horní menší zesílení
        g.drawLine(5, 367, 365, 367); // dolní menší zesílení



        for(Border border : borders){
                border.draw(g);
                }
        }

        public void start(){
                running = true;
                thread = new Thread(this, "Game Loop");
                thread.start();
        }

        public void stop(){
                running = false;
                try {
                        thread.join();
                } catch (InterruptedException e){
                        e.printStackTrace();
                }
        }

        public void run() {
                while(running){
                        tick();
                        repaint();
                }
        }

        private class Key implements KeyListener {

                public void keyPressed(KeyEvent e) {
                        int key = e.getKeyCode();

                        if(key == KeyEvent.VK_RIGHT && !left){
                                up = false;
                                down = false;
                                right = true;
                        }

                        if(key == KeyEvent.VK_LEFT && !right){
                                up = false;
                                down = false;
                                left = true;
                        }

                        if(key == KeyEvent.VK_UP && !down){
                                right = false;
                                left = false;
                                up = true;
                        }

                        if(key == KeyEvent.VK_DOWN && !up){
                                right = false;
                                left = false;
                                down = true;
                        }

                }

                @Override
                public void keyReleased(KeyEvent e) {
                        // TODO Auto-generated method stub

                }

                @Override
                public void keyTyped(KeyEvent e) {
                        // TODO Auto-generated method stub

                }
        }
}
Nahoru Odpovědět 8.9.2014 18:28
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
tomisoka
Redaktor
Avatar
tomisoka:

Nějak nechápu jak získáváš stisknuté klávesy.
Zkus použít tohle:

right = key == KeyEvent.VK_RIGHT;

Tím získáš jestli je klávesa zmáčknuta a pak už s tím můžeš pracovat.

BTW ty drawLine na to se nedá koukat, zkus to nějak vyřešit cyklem ;)

 
Nahoru Odpovědět 8.9.2014 20:12
Avatar
Tomhaus
Člen
Avatar
Odpovídá na tomisoka
Tomhaus:

njn, to sem nějak nepořešil, já sem to přidával postupně a ono se to začalo kupit :D aledíky za radu, jdu to zkusit

Nahoru Odpovědět 8.9.2014 22:08
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

Já sem si našel návod, jak udělat hru snake v Javě, mam od toho kód a snažim se použít ty posuny, co tam byli. A tam to funguje. :( takže nevim jak to tam mam zadat :(

Nahoru Odpovědět 8.9.2014 22:17
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na Tomhaus
tomisoka:

Tak už chápu jak ses k tomu dostal. Ale to byl input už předpřipravený pro hada... Raději se zamysli jak to funguje.
Jinak teď koukám, ten můj způsob není asi zrovna ideální, raději použij

if( key == KeyEvent.VK_RIGHT )right=true;

a ještě si musíš hlídat v " keyReleased" jestli jsi tu klávesu už nepustil.

 
Nahoru Odpovědět 8.9.2014 23:36
Avatar
Tomhaus
Člen
Avatar
Odpovídá na tomisoka
Tomhaus:

To mam zadaný už v té třídě Key, tak proč bych to měl zadávat znova?

Nahoru Odpovědět 9.9.2014 16:57
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

A nebo si udělam void s touhle podmínkou. :D

Nahoru Odpovědět 9.9.2014 16:58
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Odpovídá na tomisoka
Tomhaus:

Takže jak mam zformulovat private, addKeyListener a class s implementací KeyListeneru?

Nahoru Odpovědět 9.9.2014 22:03
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

Jak to, že se k xCoor, při stisku šipky do prava, nepřičte 40?

private class Key implements KeyListener {
                public void keyPressed(KeyEvent e) {
                        int key = e.getKeyCode();
                        if(key == KeyEvent.VK_RIGHT){
                                xCoor += 40;
                        }
                        if(key == KeyEvent.VK_LEFT){
                                xCoor -= 40;
                        }
                        if(key == KeyEvent.VK_UP){
                                yCoor -= 40;
                        }
                        if(key == KeyEvent.VK_DOWN){
                                yCoor += 40;
                        }

                }

                @Override
                public void keyReleased(KeyEvent e) {
                        right = false;
                        left = false;
                        up = false;
                        down = false;

                }

                @Override
                public void keyTyped(KeyEvent e) {
                        // TODO Auto-generated method stub

                }
        }
Editováno 9.9.2014 22:34
Nahoru Odpovědět 9.9.2014 22:32
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

zapomněl sem smazat vnitřek voidu keyReleased, to tam nemá bejt :D

Nahoru Odpovědět 9.9.2014 22:36
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

jak můžu zmáčknutím klávesy změnit private int hodnotu?

Nahoru Odpovědět 15.9.2014 20:11
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 42 zpráv z 42.