Help sur applet runnable (graphiques)

esigcastor Messages postés 3 Date d'inscription mercredi 27 février 2002 Statut Membre Dernière intervention 7 avril 2003 - 3 avril 2003 à 16:21
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 - 8 avril 2003 à 01:51
Salut!

Je développe un petit jeu en applet java pour une assoc contre les mines antipersonnel.

Mon problème c'est que tout l'applet clignotte méchament quand le joueur se déplace... :sad) (comme s'il rafraîchissais.. trop!).

Si qqun pouvait m'aider ce serait génial!

Merci d'avance :approve) ,

Esigcastor

6 réponses

cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
3 avril 2003 à 16:40
salut,
ce qui serait bien c est que tu nous montre ton code pour essayer de voir d ou vient le probleme ;)
Peut etre, si tu as mis un timer, faudrait il que tu rallonge le temps entres les refresh
Duss
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
3 avril 2003 à 20:15
Ton problème est que ton image est rafraichit au moment où elle s'affiche.
Il faut utiliser le double buffering.
Il y a des tutoriaux pour cela sur le site de sun (java.sun.com)

Core Breaker :)
0
esigcastor Messages postés 3 Date d'inscription mercredi 27 février 2002 Statut Membre Dernière intervention 7 avril 2003
7 avril 2003 à 16:07
J'ai essayé d'utiliser le double buffering, mais je n'y suis pas arrivé en applet runnable (tout mon jeu est fait là-dessus).

J'ai posté mon code avec l'article sur le site

MErci
0
esigcastor Messages postés 3 Date d'inscription mercredi 27 février 2002 Statut Membre Dernière intervention 7 avril 2003
7 avril 2003 à 16:09
Voilà mon code :


   import java.awt.*;
   import java.awt.event.*;
   import java.applet.*;
   import java.awt.Graphics;
   import java.awt.Image;
   import java.awt.Point;
   import java.awt.Event;
   import java.lang.Math;
   import java.util.*;
   import java.io.*;

    public class AttentionMines extends Applet implements Runnable{
   
      static int size;
   
      static int dir =0;  
      static boolean dead = false;  
  static Point[] pos_mines = {new Point(0,0),new Point(0,0),new Point(0,0),new Point(0,0),new Point(0,0)};
      Point Mon_point = new Point(0,0);
  Image img_mine;
  Image img_bonhomme;
  Image img_bonhommeex;
  Image img_home;
  Image img_school;
  Image img_fond;
   
      Thread runner;
   
       public void init() {
         Mon_point.move(470,275); 
 img_mine = getImage(getCodeBase(),"mine.gif");
 img_bonhomme = getImage(getCodeBase(),"bonhomme.gif");
 img_home = getImage(getCodeBase(),"home.gif");
 img_school = getImage(getCodeBase(),"school.gif");
 img_fond = getImage(getCodeBase(),"fond.gif");
 img_bonhommeex = getImage(getCodeBase(),"bonhommeex.gif");
         prepareImage(img_mine, this);
         prepareImage(img_bonhomme, this);
         prepareImage(img_home, this);
         prepareImage(img_school, this);
         prepareImage(img_fond, this);
 pos_mines[0].x = 100;
 pos_mines[0].y = 50;
 pos_mines[1].x = 300;
 pos_mines[1].y = 100;
 pos_mines[2].x = 150;
 pos_mines[2].y = 150;
 pos_mines[3].x = 450;
 pos_mines[3].y = 230;
 dead = false;
      }
   
       public void start() {
         if(runner==null) {
            runner = new Thread(this);
            runner.start();
         }
      }
   
       public void stop() {
         if(runner!=null) {
            runner.stop();
            runner = null;
         }
}
       public void run() {
int index = 0;
boolean paint = true;
      
         while(true) {

if (dead == false)
{
if(dir == 1) {  
Mon_point.move(Mon_point.x-10,Mon_point.y);
paint = true;
}
else if(dir == 2) {    
Mon_point.move(Mon_point.x,Mon_point.y+10);
paint = true;
}
else if(dir == 3) { 
Mon_point.move(Mon_point.x+10,Mon_point.y);
paint = true;
}
else if(dir == 4) { 
Mon_point.move(Mon_point.x,Mon_point.y-10);
paint = true;
}
dir=0;
index = 0;
while (pos_mines[index].x + pos_mines[index].y != 0)
{
if ((Mon_point.x < pos_mines[index].x + 15) & (Mon_point.x > pos_mines[index].x - 15) & (Mon_point.y < pos_mines[index].y + 5) & (Mon_point.y > pos_mines[index].y - 15))
{
dead = true;
paint = true;
}
index = index + 1;
}
}
if (paint)
{
repaint();
paint = false;
}

try{ Thread.sleep(65); }
catch(InterruptedException e) { }
         }
         
      }
   
       public void update(Graphics g) {
int index = 0;
Font currFont;
Graphics g3 = g.create(); 
g3.drawImage(img_fond, 0, 0, 500, 300,this);   
    g3.dispose();
Graphics g2 = g.create();

currFont = new Font("Arial", 1, 25);
g2.setFont(currFont);
//g.fillRect(0,0,getSize().width, getSize().height); 
while (pos_mines[index].x + pos_mines[index].y != 0)
{
g2.drawImage(img_mine, pos_mines[index].x, pos_mines[index].y, 20, 20,this);
index = index + 1;
}
g2.drawImage(img_school, 0, 20, 80, 40,this);
//	g.drawImage(img_home, 460, 258, 40, 40,this);

if (dead == true)
{
g2.drawImage(img_bonhommeex, Mon_point.x, Mon_point.y, 20, 20,this);
g2.setColor(Color.black);  
g2.drawString("Vous avez perdu !!!", 148, 148);
g2.setColor(Color.red);  
g2.drawString("Vous avez perdu !!!", 150, 150);
} else {
g2.drawImage(img_bonhomme, Mon_point.x, Mon_point.y, 20, 20,this);
}

    // Draw the upper left 100x100 portion of another image at 10,10
    
    g2.drawImage(img_home, 460, 258, 40, 40,this);	    
    g2.dispose();

      
      }
      
   
       public boolean keyDown(Event evt, int key) {
         if(key == Event.UP) {  
            dir=4;
            return true; }
         else if(key == Event.LEFT) {    
            dir=1;
            return true; }
         
         else if(key == Event.DOWN) { 
            dir=2;
            return true;
         }
         else if(key == Event.RIGHT) { 
            dir=3;
            return true;
         }
         dir=0;
         return false;
      }
   
   }

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
7 avril 2003 à 16:43
salut,
as tu essayé en rallongeant la durrée du sleep ?
Duss
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
8 avril 2003 à 01:51
Peux-tu répondre à ce message avec un lien sur le source stp?
J'ai lancé une recherche mais j'obtient à chaque fois des dizaines de liens.
(Peut-être ai-je cherché au mauvais endroit?)

Core Breaker :)
0
Rejoignez-nous