begin process at 2012 05 27 13:59:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > [C]BOUTON EN SDL

[C]BOUTON EN SDL


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :bouton, SDL, fonction Niveau :Débutant Date de création :15/05/2010 Vu :3 538

Auteur : smartties

Ecrire un message privé
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voici une fonction fait maison pour faire des boutons en SDL (pas eu le temps de mettre des commentaires)
dite mois si mon code est lisible et les choses que je pourrais améliorer

Pour ceux qui veulent tester direcement sans compiler : http://www.megaupload.com/?d=YU7LIGNN (je peut pas compresser le fichier en .zip)

Source

  • #include <stdlib.h>
  • #include <stdio.h>
  • #include <SDL/SDL.h>
  • int creabouton(int positionx, int positiony, int w, int h, SDL_Surface* ecran, int couleura, int couleurb, int couleurc)
  • {
  • int continuer = 1, i = 0, resultat = 0, j = 0, resultat2 = 0, j2 = 0;
  • SDL_Event event;
  • SDL_Surface *bouton = NULL, *degrader = NULL;
  • SDL_Rect position, position2;
  • position.x = positionx;
  • position.y = positiony;
  • position2.x = positionx;
  • position2.y = positiony;
  • bouton = SDL_CreateRGBSurface(SDL_HWSURFACE, w, h, 32, 0, 0, 0, 0);
  • SDL_FillRect(bouton, NULL, SDL_MapRGB(ecran->format, couleura, couleurb, couleurc));
  • SDL_BlitSurface(bouton, NULL, ecran, &position);
  • resultat2 = (4*h)/100;
  • resultat = (4*w)/100;
  • for(i = 0; i < resultat || i < resultat2; i++)
  • {
  • if(i < resultat)
  • {
  • degrader = SDL_CreateRGBSurface(SDL_HWSURFACE, 1, h, 32, 0, 0, 0,0);
  • SDL_FillRect(degrader, NULL, SDL_MapRGB(bouton->format, j, j, j));
  • SDL_BlitSurface(degrader, NULL, ecran, &position);
  • position.x++;
  • j += 255/resultat;
  • }
  • if(i < resultat2)
  • {
  • degrader = SDL_CreateRGBSurface(SDL_HWSURFACE, w, 1, 32, 0, 0, 0,0);
  • SDL_FillRect(degrader, NULL, SDL_MapRGB(bouton->format, j2, j2, j2));
  • SDL_BlitSurface(degrader, NULL, ecran, &position2);
  • position2.y++;
  • j2 += 255/resultat2;
  • }
  • }
  • SDL_Flip(ecran);
  • while(continuer)
  • {
  • SDL_WaitEvent(&event);
  • switch(event.type)
  • {
  • case SDL_QUIT:
  • continuer = 0;
  • break;
  • case SDL_MOUSEBUTTONDOWN:
  • if(event.button.x >= positionx && event.button.x <= (positionx + w) && event.button.y >= positiony && event.button.y <= (positiony + h))
  • {
  • return 1;
  • continuer = 0;
  • }
  • break;
  • }
  • }
  • }
  • int main ( int argc, char** argv )
  • {
  • int fenetre = 0;
  • SDL_Surface *ecran = NULL;
  • SDL_Init(SDL_INIT_VIDEO);
  • SDL_Event event;
  • ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
  • SDL_WM_SetIcon(SDL_LoadBMP("icon.bmp"), NULL);
  • SDL_WM_SetCaption("Fenetre avec bouton a martin", NULL);
  • SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
  • fenetre = creabouton(200, 300, 210, 100, ecran, 0, 0, 0);
  • SDL_Flip(ecran);
  • if(fenetre == 1)
  • {
  • fenetre = 0;
  • SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 033, 50));
  • fenetre = creabouton(640/2, 480/2, 40, 40, ecran, 25, 250, 0);
  • SDL_Flip(ecran);
  • }
  • if(fenetre == 1)
  • {
  • fenetre = 0;
  • fenetre = creabouton(0, 0, 400, 360, ecran, 255, 0, 255);
  • }
  • SDL_Quit();
  • }
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>

int creabouton(int positionx, int positiony, int w, int h, SDL_Surface* ecran, int couleura, int couleurb, int couleurc)
{
    int continuer = 1, i = 0, resultat = 0, j = 0, resultat2 = 0, j2 = 0;
    SDL_Event event;
    SDL_Surface *bouton = NULL, *degrader = NULL;
    SDL_Rect position, position2;
    position.x = positionx;
    position.y = positiony;
    position2.x = positionx;
    position2.y = positiony;

    bouton = SDL_CreateRGBSurface(SDL_HWSURFACE, w, h, 32, 0, 0, 0, 0);
    SDL_FillRect(bouton, NULL,  SDL_MapRGB(ecran->format, couleura, couleurb, couleurc));
    SDL_BlitSurface(bouton, NULL, ecran, &position);
    resultat2 = (4*h)/100;
    resultat = (4*w)/100;
    for(i = 0; i < resultat || i < resultat2; i++)
    {
      if(i < resultat)
      {
      degrader = SDL_CreateRGBSurface(SDL_HWSURFACE, 1, h, 32, 0, 0, 0,0);
      SDL_FillRect(degrader, NULL, SDL_MapRGB(bouton->format, j, j, j));
      SDL_BlitSurface(degrader, NULL, ecran, &position);
      position.x++;
      j += 255/resultat;
      }
      if(i < resultat2)
      {
      degrader = SDL_CreateRGBSurface(SDL_HWSURFACE, w, 1, 32, 0, 0, 0,0);
      SDL_FillRect(degrader, NULL, SDL_MapRGB(bouton->format, j2, j2, j2));
      SDL_BlitSurface(degrader, NULL, ecran, &position2);
      position2.y++;
      j2 += 255/resultat2;
      }
    }

    SDL_Flip(ecran);
    while(continuer)
    {
     SDL_WaitEvent(&event);
     switch(event.type)
     {
     case SDL_QUIT:
     continuer = 0;
     break;
     case SDL_MOUSEBUTTONDOWN:
     if(event.button.x >= positionx && event.button.x <= (positionx + w) && event.button.y >= positiony && event.button.y <= (positiony + h))
     {
     return 1;
     continuer = 0;
     }
     break;
     }
    }
}


int main ( int argc, char** argv )
{
   int fenetre = 0;
   SDL_Surface *ecran = NULL;
   SDL_Init(SDL_INIT_VIDEO);
   SDL_Event event;
   ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
   SDL_WM_SetIcon(SDL_LoadBMP("icon.bmp"), NULL);
   SDL_WM_SetCaption("Fenetre avec bouton a martin", NULL);
   SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
   fenetre = creabouton(200, 300, 210, 100, ecran, 0, 0, 0);
   SDL_Flip(ecran);

      if(fenetre == 1)
   {
   fenetre = 0;
   SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 033, 50));
   fenetre = creabouton(640/2, 480/2, 40, 40, ecran, 25, 250, 0);
   SDL_Flip(ecran);
   }
   if(fenetre == 1)
   {
    fenetre = 0;
    fenetre = creabouton(0, 0, 400, 360, ecran, 255, 0, 255);
   }

   SDL_Quit();
}



 Sources du même auteur

Source avec Zip Source avec une capture CASSE BRIQUE [C] [SDL]
Source avec une capture [C] BALLES REBONDISSANTES EN SDL
Source avec une capture CONVERTISSEUR

 Sources de la même categorie

Source avec Zip KISIEL CD INFO DRIVE par kisiel0147852
Source avec une capture SUPPRESSION DES REDONDANCES DE FICHIERS par cyberntique
Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture JEUX SERPENT par antho974
Source avec Zip Source avec une capture PENDU EN SDL par Damsou91
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
CASSE BRIQUE SDL MODIFICATION par Vardosh
Source avec Zip Source avec une capture BOMBERMAN 4 PLAYERS LAN (C & SDL) par c1702

Commentaires et avis

Commentaire de samodu38 le 20/05/2010 19:56:54

Si j'ais bien compris le code de ta fonction (j'ai pas compilé) tan que l'on à pas cliquer sur le bouton le programme n'avance plus? Sa ne marche donc pas si on veut créer plusieurs boutons...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Comment attribuer la fonction OpenFile a un bouton? [ par tormoj ] Comment attribuer la fonction OpenFile a un bouton?Merci d'avance à tous.tormoj Sprites & SDL [ par zmc ] Bonjour,J'ai commencé recemment à utiliser la SDL (qui n'est pas trop mal) et j'ai rencontré un petit problème :J'ai écrit une fonction qui découpe un fonction associe au bouton [ par Sade ] Slt a tous.Voila mon Pb, je Développe sous Visual C++ v6.0J'utilise les MFC et j'es mis plusieur bouton sur la même boite de dialogue. Cet bouton renv Aide pour une fonction recherche avec suivant [ par oeil123 ] je n'arrive pas a trouver la fonction que microsoft utilise pour faire le dialog recherche avec le fameux bouton suivant qui m'interesse.En fait je vo Comment faire appel à une fonction? [ par freepouy18 ] Bonjour a tous,Voila, j'ai cr&#233;&#233; un formulaire avec MSInfoPath2003 contenant un bouton. Ce bouton fait appel &#224; une fonction cr&#233;&#23 SDL : Un cercle pas entier en fonction de y, x et du rayon [ par The_Sin ] Salut, je fais un cercle en SDL, et quand x ou y sont plus petits que le rayon ou plus grand que la 'taille de l'&#233;cran - rayon', le cercle dessin C SDL gestion de evenement et desyncronisation d' un fonction par rapport a eux [ par madink ] bonjour, je m' excuse si l' explication de mon probleme n' est pas tres claire mais il atteint les limites de ma faible compréhension de la programat SDL_EnableKeyRepeat [ par Rhazou ] Dans un programme que je tente de finir, j'utilise la fonction SDL_EnableKeyRepeat qui me permet de repetter l'event en gardant le boutton apuillé. Se Fermer un programme [ par bastien1307 ] SalutVoila j'ai un programme qui utilise la fonction system("start NomDuProgramme.exe");, quand on appui sur un bouton, ce qui permet de lancer un aut Arreter un thread [ par romauto750 ] Bonjour à tous,J'aurai aimé savoir comment on faisait pour arrêter un thread. Je m'explique :J'ai une fonction qui appelle un thread, cependant le cod


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,162 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales