Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Javalla probleema

DancingDevil [23.11.2007 17:15:29]

#

Olen jo vähän aikaa tämmösen probleeman kanssa häsläilly tarkotus ois että donitsi
tippuisi ilman että jotain nappia painettaisi samaan aikaan.

Tässä tämä koodi:

     package org.me.hello;

     import java.applet.*;
     import java.awt.*;
     import java.awt.event.*;

     public class peli extends Applet implements KeyListener,Runnable {

     Font fontti = new Font("Helvetica", Font.BOLD,  20);

     Image homer;
     Image homerv;
     Image sydan;
     Image donut;

     int aika=0;
     int aks;
     int x,y;
     int pisteet,livet;

     public boolean oikee;
     public boolean vasen;
     public boolean tippuu;
     public boolean focus;

     private Thread thread =new Thread(this);

     public void run(){

     while (true) {

     try{

     Thread.currentThread().sleep(20);
     }catch(InterruptedException e){
     }

     repaint();

     }
     }

     public void init(){
     this.aks=(int)(4*Math.random()*100+4);
     addKeyListener(this);
     setBackground(Color.BLACK);
     donut = getImage(getDocumentBase(),"donutti.png");
     homer = getImage(getDocumentBase(),"homer.png");
     homerv = getImage(getDocumentBase(),"homerv.png");
     sydan = getImage(getDocumentBase(),"sydan.png");
     resize(600,400);
     livet = 4;
     x=175;
     y=-70;
     }

     public void keyPressed(KeyEvent e) {

          if (e.getKeyCode() == KeyEvent.VK_ENTER) {
             tippuu = true;
          }

          if (e.getKeyCode() == KeyEvent.VK_LEFT) {
             vasen = true;
          }


          if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
             oikee = true;
          }

     if(oikee == true){
     if(x<350)x = x+10;
     }


     if(vasen == true){
     if(x>0)x = x-10;
     }

     if(tippuu==true)y = y +5;

     repaint();
     }

     public void keyReleased(KeyEvent e) {

          if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
              oikee = false;
          }

          if (e.getKeyCode() == KeyEvent.VK_LEFT) {
              vasen = false;
          }
     }

    public void actionPerformed(ActionEvent e) {}

     public void alas(){

     }

     public void paint(Graphics g) {

     g.setColor(Color.red);
     g.drawRect(450,1,5,1000);
     g.setFont(fontti);
     g.drawString("Lives:",470,50);

     if(livet > 1){
     g.drawImage(sydan,470,65,30,30,this);
     }

     if(livet > 2){
     g.drawImage(sydan,500,65,30,30,this);
     }

     if(livet > 3){
     g.drawImage(sydan,530,65,30,30,this);
     }

     g.drawString("Points:"+pisteet+"",470,130);

     if(vasen==false){
     g.drawImage(homer,x,313,83,100,this);
     }

     if(vasen==true){
     g.drawImage(homerv,x,313,83,100,this);
     }

     g.drawImage(donut,aks,y,50,50,this);
     }

    public void keyTyped(KeyEvent e) { }

    }

kiitoksia jo etukäteen!

FooBat [23.11.2007 19:30:35]

#

Siirrä noi keyPressed-metodin sisällä olevat kuvan liikutuskoodit run-metodin sisään (while(true)-silmukkaan). Jätä keyPressed ja Released -metodien sisään vain näppäinten tilan hallinta.

DancingDevil [23.11.2007 21:20:47]

#

Kun laitan nuo liikutuskoodit(Tarkotitko tota if(tippuu==true)y = y +5;?) tonne run metodiin niin se donitisi ei tipu ollenkaan...

kayttaja-2499 [23.11.2007 21:39:24]

#

Olet luonut uuden säikeen(thread), joka suorittaa run-metodissa olevan koodin. Et ole kuitenkaan käynnistänyt sitä säiettä. Eli kirjoita init-metodin loppuun "thread.start();".

DancingDevil [24.11.2007 11:34:23]

#

Nyt toimii... KIIITOOOS

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta