Petit pong

Description

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;}	 
	 }

Codes Sources

A voir également

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.