TwiiK Skrevet 14. oktober 2007 Del Skrevet 14. oktober 2007 Hei, kommer sikkert til å spørre om masse i denne tråden så lar være å spesifere tittelen yttligere. Her er spillet så langt: //----------Importerer nødvendige bibliotek-------------// import java.awt.*; import java.awt.image.*; import javax.swing.*; import java.awt.event.*; //------------------------------------------------------// public class MittVindu extends JPanel implements Runnable,KeyListener { private boolean running; // Om programmet kjører eller ikke (Må være true så lenge animasjonen skal kjøre) private int bredde = 400; // Bredden på vinduet (i piksler) private int høyde = 200; // Høyden på vinduet (i piksler) private int x, y; // Variabler for posisjonen til spilleren //private Image spiller = Toolkit.getDefaultToolkit().getImage(getClass().getResource("spiller.gif")); // laster inn bildet// private Thread animasjonsloop; // Setter animasjonsloopen private JFrame ramme; // Definerer rammen (eller noe sånt :P) private boolean leftKey, rightKey, upKey, downKey; // Tastene som styrer spilleren private boolean lockjump; // Hindrer at man kan hoppe mens man er i luften //***************************Konstruktør for vinduet MittVindu***********************// public MittVindu(){ ramme = new JFrame(); // Instansierer JFrame ramme.getContentPane().add(this); // Legger dette panelet inn i rammen ramme.setTitle("Mitt vindu"); // Setter tittelen på vinduet ramme.setSize(bredde,høyde); // Setter størrelsen på vinduet ramme.setVisible(true); // Gjør det synlig ramme.setBackground(Color.white); // Setter bakgrunnsfargen til svart ramme.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Sørger for at programmet slutter når man trykker på lukkeknappen animasjonsloop = new Thread(this); // Lager tråden som skal oppdatere grafikken animasjonsloop.start(); // starter tråden med utgangspunkt i run()-metoden addKeyListener(this); // Muligjør input requestFocus(); // Krever fokus på vinduet } //***************************Metoden som tegner grafikken****************************// public void paint(Graphics g){ g.setColor(Color.black); g.fillRect(0,0,bredde,150); g.setColor(Color.white); g.fillOval(x, y, 20, 20); //g.drawImage(spiller,x,y,this); // Tegner spilleren// } /* * Metode som kalles hver gang en knapp trykkes */ public void keyPressed(KeyEvent e){ if(e.getKeyCode()==KeyEvent.VK_LEFT) leftKey = true; if(e.getKeyCode()==KeyEvent.VK_RIGHT) rightKey = true; if(e.getKeyCode()==KeyEvent.VK_UP) upKey = true; if(e.getKeyCode()==KeyEvent.VK_DOWN) downKey = true; } /* * Metode som kalles hver gang en knapp slippes */ public void keyReleased(KeyEvent e){ if(e.getKeyCode()==KeyEvent.VK_LEFT) leftKey = false; if(e.getKeyCode()==KeyEvent.VK_RIGHT) rightKey = false; if(e.getKeyCode()==KeyEvent.VK_UP) upKey = false; if(e.getKeyCode()==KeyEvent.VK_DOWN) downKey = false; } public void keyTyped(KeyEvent e){} /* * Metode som flytter x og y- koordinatene */ public void update(){ int xFart = 4; // fart i x-retning int yFart = -50; // fart i y-retning int gravitasjon = 2; // gravitasjon if(leftKey) x = x - xFart; if(rightKey) x = x + xFart; if(upKey && !lockjump){ y = y + yFart; lockjump = true; } if (y <= 130){ yFart = 0; y = y + gravitasjon; } else { lockjump = false; } } /* * Stopper kjøringen av animasjonen ved å * sette variabelen running til false. */ public void stop(){ running = false; } /* * Metoden som kjøres når du kaller start() * på animasjonstråden */ public void run(){ running = true; while ( running ) { update(); repaint(); try { animasjonsloop.sleep(30); // Tråden sover i 30 millisekunder, vi må dessuten fange et unntak som denne metoden kaster } catch ( Exception e ) { e.printStackTrace(); } } } //***************************Main metoden for spillet********************************// public static void main(String[] args){ MittVindu vindu = new MittVindu(); // Instansierer vinduet } } Du finner det også i den vedlagte .zipfilen. Hele spillet er i en klasse og bruker ingen bilder så er bare å kompilere og kjøre. Her kommer spørsmål 1: Jeg prøver å få til hopping i spillet ("Pil opp" så hopper man), men jeg får det rett og slett ikke til. Mulig det bare er hjernetørke (håper det ), men får ikke tak på prinsippet med fart og akselerasjon. Orker noen se på koden min og gi meg noen tips om hvordan jeg kan få til realistisk hopping og gravitasjon? Her er den delen av koden som direkte har noe med hoppingen å gjøre: private int y; private boolean lockjump; public void keyPressed(KeyEvent e){ if(e.getKeyCode()==KeyEvent.VK_UP) upKey = true; } public void keyReleased(KeyEvent e){ if(e.getKeyCode()==KeyEvent.VK_UP) upKey = false; } public void update(){ int yFart = -50; // fart i y-retning int gravitasjon = 2; // gravitasjon if(upKey && !lockjump){ y = y + yFart; lockjump = true; } if (y <= 130){ yFart = 0; y = y + gravitasjon; } else { lockjump = false; } } Jeg lagde lockjump for å hindre at man kan holde inne hoppeknappen, men det er jo selvsagt fra koden at når man trykker inn "Pil Opp" nå så setter den bare y-posisjonen til y - 50. Det er jo ikke hopping. Jeg vil at den da skal få en fart oppover som sakker av ettersom gravitasjonen påvirker den, men klarer rett og slett ikke få det til. Og dersom noen har noen geniale sider/forum/communities med tutorials o.l angående spillprogrammering for nybegynnere og spesielt spillprogrammering i java så hadde det vært knall. -- TwiiK MittVindu.zip Lenke til kommentar
LostOblivion Skrevet 14. oktober 2007 Del Skrevet 14. oktober 2007 Artig program! Inviterer til objekter. =) Og lagde en god tilnærming til "gravitasjon". =) Lykke til! Digger selv å lage spill, så stå på! MittVindu.zip Lenke til kommentar
TwiiK Skrevet 14. oktober 2007 Forfatter Del Skrevet 14. oktober 2007 Det der så knall ut, Oblivion. Var på vei i seng så får ikke sett mer på det nå, men takk så mye. Lenke til kommentar
LostOblivion Skrevet 14. oktober 2007 Del Skrevet 14. oktober 2007 God kveld, sendte pm... Lenke til kommentar
v3g4rd Skrevet 23. oktober 2007 Del Skrevet 23. oktober 2007 Brukte noen minutter på å finne en sprite på nettet, og inkluderte denne med i programmet ditt MittVindu.zip Lenke til kommentar
olaw Skrevet 23. oktober 2007 Del Skrevet 23. oktober 2007 Kult, lastet ned og testet. Hoppingen ser realistisk ut Morsomt med spillprogrammering! Lenke til kommentar
JAPCU Skrevet 23. oktober 2007 Del Skrevet 23. oktober 2007 Hehe. Morsomt å se hvert bidrag så langt. Hva nå? Skilpadder å mose? Blokker som skal knuses? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå