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!
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.
Kun laitan nuo liikutuskoodit(Tarkotitko tota if(tippuu==true)y = y +5;?) tonne run metodiin niin se donitisi ei tipu ollenkaan...
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();".
Nyt toimii... KIIITOOOS
Aihe on jo aika vanha, joten et voi enää vastata siihen.