Résolu Probleme Switch

didi world

Nouveau membre
BONJOUR tout le monde :bounce:

J'ai juste une petite question je voulais savoir par quoi peut on remplace un switch.
Je sais c'est un peu louche mais toute reponse sera la bienvenu merci :love: :love: :love:
 

skorr

Grand Maître
Salut,

Par un autre switch? ^^

Dis nous tout ^^

Au passage t'es dans la mauvaise section!
 

zeb

Modérateur
@skorr: si tu ne programmes pas en C/C++/Java, évite de faire ce genre de commentaires :o
(switch est une instruction dans ces langages ;) )

@didi: Ben une suite de if .. else évidemment !
(Comment ça, ce n'est pas évidement. C'était une question de cours ?)
 

bebRito

Grand Maître
Salut,

@skorr: pourquoi dans la mauvaise section ? si c'est bien de l'instruction switch dont il parle c'est bon. ca existe dans pas mal de langages.

@didi world: c'est quoi le langage. sinon c'est des if / else imbriqués mais en général quand il y a trop de cas on utilise un switch hein !

[GRILLED : avec quasiment la même réponse en plus !!! :cry: ]
 

skorr

Grand Maître
MDR ah ok je comprend maintenant, si j'apprends le C mais j'avais pas fait le rapport.... (en même temps j'ai pas encore vu sa)

Je pensais qu'il parlait du switch (matériel)

Bref désoler :/
 

zeb

Modérateur
C'est un scandale !

bebRito, tu as fait un plagiat honteux de MA réponse en prétendant t'être fait griller. Je n'en crois rien. Tout ça c'est pour récupérer les points de meilleure réponse. Je pense sérieusement prendre les mesures qui s'imposent pour punir cette méprisable attitude.

:fou: [:aha] :ange: :) :whistle: :D :lol: [:marsien]
 

bebRito

Grand Maître
:heink: :??: :( :p :sarcastic: :) [:_q2_]

Toujours aussi fou Zeb !
Tu m'as bien rire ce matin, et ca me remet de bonne humeur ;)
Merci !

:hello:
 

Storos

Modérateur cochon
Staff
Je +1 ce que dis zeb...

Comme ça avec un peu de chance et une distraction du posteur, je serai meilleur réponse... :whistle:

Bon... Je sors... :vendredi:
 

didi world

Nouveau membre
en faite je veux utiliser la gestion d'evenement (utilisation de la souris) et je voudrais le faire sans les switch et bien sur c'est en C
 

bebRito

Grand Maître
quelle librairie utilises-tu ? SDL ?

Le mieux est d'utiliser un switch pour les évènements, ca me parait plus propre.

Voici un exemple si tu utilises SDL:
Code:
SDL_Event event;
// process events
		while (SDL_PollEvent(&event)) {
			// for each event, look for its type
			switch (event.type) {
			// manage the event according to its type
			case SDL_QUIT:
				// quit the application
				done = 1;
				break;
			case SDL_KEYUP:
				// if the q letter is released
				
				break;
			case SDL_MOUSEBUTTONUP:
				// manage the mouse click
				
				break;
			case SDL_MOUSEMOTION:
				// manage the mouse motion
				
				break;
			default:
				// use the default use case if the event does not need to be manage
				break;
			}
		}
 

didi world

Nouveau membre
ok merci pour ton exemple bebRito mais le truc ce que je ne peut utiliser que if et else comme condition et je voulai juste un exemple de gestion d'evenement avec ces commandes mais merci de t'etre pris la tete sur mon probleme.
 

bebRito

Grand Maître
Pris la tête ? non, j'ai juste copier/coller du code d'un de mes projets ;)

Si tu veux le faire avec un if/else, bah tu remplace le switch comme ça:
Code:
if (event.type == SDL_QUIT){
       //traitement du quit
} else {
       // autre évènement
}

Mais ce n'est pas top je trouve...
 

didi world

Nouveau membre
ok merci sympa je vai coder mon petit projet et apres je te montre ce que sa donne
:)
 

bebRito

Grand Maître
Le problème avec le if/else, c'est que ca va t'obliger à les imbriquer. Ce n'est pas très lisible ...

J'attends de voir ça ;)
 

Storos

Modérateur cochon
Staff
La seule explication que je vois c'est que ça doit être un exercice scolaire... :o

Je me trompe? ;)
 

Storos

Modérateur cochon
Staff
...
...
Il a peut-être beaucoup redoublé? :o
...
...

:D

Bon d'accord, je me trompais... :o

Mais je suis quand même curieux de connaître la raison de cette switchophobie... :)
 

bebRito

Grand Maître
:lol:

C'est clair, je suis d'accord avec toi, pour moi rien ne vaut un switch dans ce cas d'utilisation, surtout pour la gestion d'évènements.
 

didi world

Nouveau membre
[cpp]
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <SDL_image.h>

int main()
{
SDL_Surface *display;
SDL_Surface *image;
SDL_Rect positionImage;
SDL_Event event;
int i;

SDL_Init(SDL_INIT_VIDEO);
i = 1;
display = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("super window", NULL);
image = SDL_LoadBMP(images.bmp);
positionImage.x = display->w / 2 - image->w / 2;
positionImage.y = display->h / 2 - image-> h / 2;
SDL_EnableKeyRepeat(10, 10);
while (i != 0)
{
SDL_WaitEvent(&event);
if (event.type == SDL_QUIT)
{
i = 0
case SDL_KEYDOWN:
if (event.key.keysym.sym != SDL_QUIT)
{
case SDLK_UP:
positionImage.y--;
case SDLK_DOWN:
positionImage.y++;
case SDLK_RIGHT:
position.x++;
case SDLK_LEFT:
position.x--;
}
SDL_FillRect(display, NULL, SDL_MapRGB(display->format, 255, 255, 255));
SDL_BlitSurface(image, NULL, display, &positionImage);
SDL_Flip(display);
}
}
SDL_FreeSurface(image);
SDL_Delay(4000);
SDL_Quit();
return (EXIT_SUCCESS);
}

}
[/cpp]
bon voila bebRito mn code come promis bon il marche pas super il segfault c'est cause de la partie evenement avec les if et les else qui remplace les switch :cry: :cry: :cry: :cry:
 

bebRito

Grand Maître
Ah non mais ca ne risque pas de compiler là !!

C'est quoi ces "case" en plein milieu.
le mot clé "case" ne doit être utilisé que dans des "switch" !

Je te conseille d'aller suivre des tutos en C/C++ sur developpez.com car là, tu manques cruellement de base en programmation C !

et puis indente ton code, c'est absolument illisible ! :o

tout le monde a le droit de débuter mais je ne vais pas te faire un cours magistrale en C.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 079
Messages
6 716 703
Membres
1 586 247
Dernier membre
MrAzgarIII
Partager cette page
Haut