Bug Affichage Pong ;( Help pls
Daryua
-
Utilisateur anonyme -
Utilisateur anonyme -
#include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include <SDL_image.h> #include "jeu.h" #include "constantes.h" void jouer(SDL_Surface *ecran){ int contin = 1, sensLargeur = 0, sensHauteur = 0; SDL_Surface *ping[2] = {NULL}, *ball = NULL; SDL_Rect positionPing[2], positionBall; SDL_Event event; int tempsActuel = 0, tempsPrecedent = 0; tempsActuel = SDL_GetTicks(); positionPing[0].x = 0; positionPing[1].x = LARGEUR_FENETRE - LARGEUR_PING; positionPing[0].y = 0; positionPing[1].y = (HAUTEUR_FENETRE/2) - (HAUTEUR_PING/2); positionBall.x = (LARGEUR_FENETRE/2) - (LARGEUR_BALL/2); positionBall.y = (HAUTEUR_FENETRE/2) - (HAUTEUR_BALL/2); ping[0] = IMG_Load("j1.png"); ping[1] = IMG_Load("j2.png"); ball = IMG_Load("balle.png"); while(contin != 0){ SDL_PollEvent(&event); switch(event.type){ case SDL_QUIT: contin = 0; break; case SDL_KEYDOWN: switch(event.key.keysym.sym){ case SDLK_ESCAPE: contin = 0; break; case SDLK_UP: colision(&positionPing[0], HAUT); break; case SDLK_DOWN: colision(&positionPing[0], BAS); break; } break; } SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0)); mouvementBall(&positionBall, &positionPing[0], &positionPing[1], &sensLargeur, &sensHauteur); SDL_BlitSurface(ball, NULL, ecran, &positionBall); SDL_BlitSurface(ping[0], NULL, ecran, &positionPing[0]); SDL_BlitSurface(ping[1], NULL, ecran, &positionPing[1]); deplacementOrdi(positionBall, &positionPing[1], sensLargeur, sensHauteur); SDL_Flip(ecran); } } void colision(SDL_Rect *pos, int direction){ switch(direction){ case HAUT: if(pos->y < 0) break; pos->y--; break; case BAS: if(pos->y > (HAUTEUR_FENETRE - HAUTEUR_PING)) break; pos->y++; break; } } void mouvementBall(SDL_Rect *pos, SDL_Rect *ping1, SDL_Rect *ping2, int *sensLargeur, int *sensHauteur){ int tempsA = 0, tempsP = 0; tempsA = SDL_GetTicks(); if(tempsA - tempsP > 30){ tempsP = tempsA; sensBallLargeur(sensLargeur, ping1, ping2, *pos, sensHauteur); sensBallHauteur(*pos, sensHauteur); switch(*sensLargeur){ case 0: switch(*sensHauteur){ case 0: pos->y--; //haut a gauche break; case 1: pos->y++; // bas a gauche break; } pos->x--; break; case 1: switch(*sensHauteur){ case 0: pos->y--; //haut a droite break; case 1: pos->y++; // bas a droite break; } pos->x++; break; } } } void sensBallLargeur(int *sens, SDL_Rect *ping1, SDL_Rect *ping2, SDL_Rect pos, int *sensHauteur){ int yballDebut = pos.y + 1; int yballFin = pos.y + HAUTEUR_BALL - 1; int yPingDebut = ping1->y + 1; int yPingFin = ping1->y + HAUTEUR_PING -1; int yPing2Debut = ping2->y + 1; int yPing2Fin = ping2->y + HAUTEUR_PING -1; if(((yballDebut >= yPingDebut && yballDebut <= yPingFin) || (yballFin >= yPingDebut && yballFin <= yPingFin)) && pos.x < ping1->x + LARGEUR_PING){ *sens = 1; } if(((yballDebut >= yPing2Debut && yballDebut <= yPing2Fin) || (yballFin >= yPing2Debut && yballFin <= yPing2Fin)) && pos.x > ping2->x - LARGEUR_PING){ *sens = 0; } } void sensBallHauteur(SDL_Rect pos, int *sensHauteur){ if(pos.y <= 0){ *sensHauteur = 1; } if(pos.y >= HAUTEUR_FENETRE){ *sensHauteur = 0; } } void deplacementOrdi(SDL_Rect pos, SDL_Rect *positionPing2, int sensLargeur, int sensHauteur){ int i = 0; if(sensLargeur == 1){ for(i = 0; i < pos.y + (HAUTEUR_BALL /2); i++){ if(sensHauteur == 0) positionPing2->y++; if(sensHauteur == 1) positionPing2->y++; } } }
J'ai un probleme avec ce code, quand je le lance, tout fonctionne parfaitement mais (il faut toujours un mais) la raquette de l'IA bug quand elle change de position (par bug j'entends bug d'affichage, l'image ne s'affiche qu'aprés avoir fixé une possition) Et pour un rendu plus fluide j'aimerais bien que l'affichage soit fluide et non aprés avoir fixé la position ..
A voir également:
- Bug Affichage Pong ;( Help pls
- Affichage double ecran - Guide
- Windows 11 affichage classique - Guide
- Pinterest problème affichage - Forum Navigateur
- Pinterest : problème d'affichage - Forum Réseaux sociaux
- Bug chromecast - Guide