Voici le début d'un petit jeu simple inspiré du célèbre Pong avec un petit algorithme de collisions.
Source / Exemple :
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Event;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
// réalisé par fate123
public class toto extends Applet implements Runnable
{
int x_pos = 17; // dimension de la balle
int y_pos = 100;
int radius = 7;
int hauteur = 5; // dimension de la raquette
int largeur = 40;//
int possx = 50; // position de la raquette
int possy = 170;
int vit = 1; // vitesse
int score = 0;
boolean perdu = false;
boolean coll = false;
boolean activation= true;
public void init()
{
int vit = 2; // vitesse
int score = 0;
setBackground (Color.black);
}
public void start ()
{
Thread th = new Thread (this);
th.start ();
}
public void stop()
{
}
public void destroy()
{
}
public void run ()
{
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
while (!(perdu))
{
if((x_pos>0 ) && (x_pos<12)){ // X collisions
x_pos= 15;
coll = false;
}
else if((x_pos>188 ) && (x_pos<210 )){
x_pos=184;
coll =true;
}
if (y_pos>0 && y_pos<8){ // Y collisions
y_pos= 12;
activation=true;
}
else if ((y_pos>=possy-2 && y_pos<=possy-1)&&(x_pos >= possx && x_pos<= possx+largeur+1))
{ // raquette collision
y_pos= possy - 10;
score = score+15;
activation = false;
}
//coin droit de la barre
else if ((y_pos>possy-3 && y_pos<=possy+3)&&(x_pos > possx+(largeur+1) && x_pos< possx+largeur+9)){
score = score+15;
y_pos= possy - 7;
x_pos= x_pos+10;
coll = false; // la balle repart dans le sens inverse si elle touche le coin de la barre
activation = false;
}
//coin gauche de la barre
else if ((y_pos>possy-1 && y_pos<=possy+4)&&(x_pos < possx+1 && x_pos> possx-9)){
score = score+15;
y_pos= possy - 17;
x_pos= x_pos-10;
coll = true; // la balle repart dans le sens inverse si elle touche le coin de la barre
activation = false;
}
if((x_pos>=15 ) && (coll==false) ){ // mouvement de la balle après collisions
x_pos=x_pos+vit;
}
else if ((x_pos<=184) && (coll==true) ){
x_pos=x_pos-vit;
}
if((y_pos>= 12 ) && (activation==true) ){
y_pos=y_pos+vit;
}
else if ((y_pos<=183) && (activation==false) ){
y_pos=y_pos-vit;
}
if(y_pos> possy+30)
{
perdu = true;
}
repaint();
try
{
Thread.sleep (20);
}
catch (InterruptedException ex)
{
}
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
public void paint (Graphics g)
{
g.setColor (Color.green);
g.fillOval (x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);
g.setColor (Color.yellow);
g.drawString("Score : "+ score, 20, 190);
switch (score){
case 60 : vit=2;g.drawString("NIVEAU "+ vit,60,80); break;
case 150 : vit=3;g.drawString("NIVEAU "+ vit,60,80); break;
case 415 : vit=4;g.drawString("NIVEAU "+ vit,60,80); break;
}
if((perdu)){ g.drawString("GAME OVER",50,80);
}
g.setColor(Color.red);
g.fillRect(possx,170,largeur,hauteur);
}
public boolean mouseMove(Event evt, int x, int y)
{ possx=x; repaint(); return true;}
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.