Tu commence a lire un tutorial pour le C et en meme temps, tu fais ma methode d´apprentissage par le jeu :
http://perso.wanadoo.fr/ck/NGCK.htm
Si tu regardes l´execrice D2, c´est un pong ( avec une seul raquette
) , et tu peux le realiser avec seulement 5 notions de bases du C.
Et voici mon corrigé ( c´est pas trop dur a comprendre comment ca marche).
- include " ../Ngck_moteur/Ngck.h"
int CentreRaquettePosition; / / Peut varier entre 1+taille et 28+taille
int TailleDemiRaquette; / / Combien de case on ajoute de chaque coté pour faire la raquette
int PositionBalleX; / / Position de la balle
int PositionBalleY;
int VitesseBalleX; / / Vitesse de la balle, ( le signe = le sens )
int VitesseBalleY;
/ /
--------------------------------------------------
-------------------
void InitialiseGame()
{
TailleDemiRaquette=3;
CentreRaquettePosition=14;
PositionBalleX=14; / / Position de la balle
PositionBalleY=5;
VitesseBalleX=1; / / Vitesse de la balle, ( le signe = le sens )
VitesseBalleY=1;
} / / Fin InitialiseGame
/ /
--------------------------------------------------
-------------------
void GameLoop()
{
int i;
/ / -- Affiche Cadre
for ( i=0; i<30; i++) {
KPrintSquare(i,0);
if ( i<=19) {
KPrintSquare(0, i);
KPrintSquare(29,i);
}
}
/ / -- Gere Deplacement de la raquette
if ( KGetLeft()==1) {
CentreRaquettePosition--;
}
if ( KGetRight()==1) {
CentreRaquettePosition++;
}
/ / -- Gere Deplacement de la balle
PositionBalleX += VitesseBalleX;
PositionBalleY += VitesseBalleY;
/ / -- Verifie si on depasse sur un bord, dans ce cas, on ramenne la raquette dans l´ecran
if ( CentreRaquettePosition-TailleDemiRaquette<1)
CentreRaquettePosition=1+TailleDemiRaquette;
if ( CentreRaquettePosition+TailleDemiRaquette>28)
CentreRaquettePosition=28-TailleDemiRaquette;
/ / -- Verifie si la balle rebondie
/ / Sur la gauche
if ( PositionBalleX<=1) {
PositionBalleX=1;
VitesseBalleX = -VitesseBalleX;
}
/ / Sur la droite
if ( PositionBalleX>=28) {
PositionBalleX=28;
VitesseBalleX = -VitesseBalleX;
}
/ / Sur le haut
if ( PositionBalleY<=1) {
PositionBalleY=1;
VitesseBalleY = -VitesseBalleY;
}
/ / Test si ca rebondie sur la raquette ou ca part dans le vent
/ / Si on est sur la ligne 17, alors on doit etre dans la raquette sinon, on a perdu ( et on remets la ball au centre)
/ / ( On le fait pas sur la ligne 18) car c´est pas beau ( la balle est sur la raquette)
if ( PositionBalleY>=17) {
/ / est on sur la raquette
if (
(PositionBalleX>=CentreRaquettePosition-TailleDemi
Raquette) &&
(PositionBalleX<=CentreRaquettePosition+TailleDemi
Raquette) ) {
/ / Oui alors on fait le rebond
VitesseBalleY = -VitesseBalleY;
}
else
{
/ / Non alors perdu
/ / Remets la balle au milieu avec direction dans l´autre sens
VitesseBalleX = -VitesseBalleX;
VitesseBalleY = -VitesseBalleY;
PositionBalleX=14; / / Position de la balle
PositionBalleY=5;
}
}
/ / --Affiche Raquette
for ( i=CentreRaquettePosition-TailleDemiRaquette; i<=CentreRaquettePosition+TailleDemiRaquette; i++) {
KPrintSquare(i, 18);
}
/ / -- Affiche Balle
KPrintBall(PositionBalleX, PositionBalleY);
} / / Fin GameLoop
/ /
--------------------------------------------------
-------------------