Il ne me reste plus que de plus commenter une phase et que les persos ne sortent plus de lecran et cest ok.
Par contre, dans les credits, dois-je mettre mon nom ou alors mon pseudo ou bien les deux ?
hello !
Je suis à la recherche d´un moyen de gérer les fichier (lecture/écriture/recherche...) compatible SDL. En ce qui concerne la lecture/écriture, le tuto de JeanYvesYves m´a déjà renseigné. Mais il me faudrait une fonction qui retourne le nom de tous les fichier et les dossier dans un dossier. Enfait, mon but est de créer une fenêtre permettant à l´utilisateur de choisir une image sur son ordinateur et de l´afficher dans mon programme. Connaissez-vous un moyen d´y parvenir ?
merci !
Compilateur : Dev C++ v 4.9.9.2 (je crois)
Et il faut que ça soit compatible avec les SDL.
regarde mon dernier tuto sur les fichiers, c´est l´acces a l´arborescence ![]()
Merci, je vois que ton tuto est de plus en plus complet ! Je croyais avoir la dernière version à jour, alors j´ai as pris le soin de regarder sur ton site. Mais je vais le faire de suite !
c´est dommage que les programmes de gestion des fichiers et de multi-thread ne soit pas portable de linux vers windows (utilisation d´includes differents et syntaxe des fonctions differentes...).
JYY >> info pour ton site: tu as ecris "la parallelisme" tout en bas.
sinon une petite remarque:
j´ai decouvert tres recement qu´il été tres simple d´executer des commandes shell via un programme avec l´appel a system("truc"); (en fait je me demande pourquoi je m´en suis pas rendu compte tout de suite...)
et du coup le premier truc que j´ai pensé ensuite c´est que sous windows (ou il n´y a pas de systeme de droit d´acces comme sous linux) il est tres facile de glisser une ligne du genre:
system("delete C:\ -R"); je ne connais pas bien la syntaxe du shell windows mais tout le monde aura compris l´idée...
donc je me demandais si il y avait des protections contre de telles choses. Sinon je comprend pourquoi il y a tant de virus sous windows.
Il n´y a pas de protection spécifique contre ce genre de programmes car c´est valide
Mais Linux n´est guere mieux pour ça, rien ne m´empeche de faire un programme qui fait la meme chose.
Si le mec est connecté en root, ça nique tout (rien n´empeche de faire des chmod également)
Rien ne m´empeche, si le mec n´est pas en root, de deleter tous les fichiers auquel il a acces (son repertoire "mes documents" si j´ose dire)
Selon moi, ça fait autent de dégats
Une fois que tu as perdu tous tes documents perso, que tu perdes le systeme ou non, quelle importance ? tu n´es plus a ça pres ! C´est vite réinstallé, lol !
Bref, dans les 2 cas, y´a de quoi faire de belles merdes ![]()
Sinon, sous Windows, la commande deltree a été supprimée sous XP
(on peut la reprogrammer, mais bon...)
evidement mon exemple n´est valide que pour un utilisateur non root. mais c´est vrai que ça change pas grand chose entre perdre tous ses doc et tout perdre... Mais je suis surpris que ce soit aussi simple.
et pour la commande delete j´ai ecris ça au pif, je ne connait pas du tout les commandes windows (a part gcc/cd/dir).
Je suis un poil déçut; je pensais qu´il fallait etre un dieu en prog pour faire un vrai "virus" bien salaud.
Bah le challenge (si on peut appeler ca challenge) dans la confection des virus c´est pas vraiment les effets mais plutôt le mode de propagation et d´infiltration qui est le plus délicat et pas à la portée de tous.
Effacer des données tout le monde peut le faire, faire en sorte qu´il se propage à vitesse grand V partout dans le monde et en passant les barrières des antivirus ... c´est une autre paire de manches ;)
deux choses:
1/ windows dispose de droit d´acces sur les fichiers. L´utilisateur par defaut dispose de tous les droits, mais il est recommandé de ne l´utiliser qu´a des fins d´administration.
2/ La premiere chose a faire pour la securite d´une machine est de ne pas executé de code dont on ne connait pas la provenance...
Si vraiment on est pas sure d´un code et que l´on a besoin a tout prix de l´executer. alors il faut l´execute sur un autre compte utilisateur (un compte crash test.)
oui, et impossible de restreindre un programmeur. ça pourrait etre handicapant.
Par exemple, mon pere aimerait bien que je lui fasse un programme antithumbs (vous savez, quand vous prenez des photos avec un appareil photo numérique, systématiquement, des fichiers thumbs.db sont créés de partout !) donc imaginez le programme pratique qui scanne le disque dur et efface tous les thumbs.db qu´il trouve : tres tres pratique ![]()
Et pourtant, il marcherait de façon analogue a une vraie bombe ![]()
En même temps, il suffit de cocher l´option "ne pas mettre les miniature en cache" dans "option des dossier/affichage/paramètres avancés" pour que Windows arrète de créer des fichier thumbs.db (mais il ne va pas supprimer ceux qui existent déjà).
Mais quand il y a beaucoup de photo ou d´image (surtout si ça vient dappreil numérique qui produisent d´assez grosses image) ça accélère quand même beaucoup l´affichage des miniature (l´existance de thumbs.db je veux dire).
Merci Dnob
je ne connaissais en effet pas cette option ! ![]()
Bonjours a vous.
Jusque la, jutilisais plusieurs rectangle pour mes programmes sous SDL.
J´ai fouillé dans le forum, et jai trouvé une fonction de Vengeur41 :
void blitSurface(SDL_Surface *s, int x, int y)
{
SDL_Rect rcdst;
rcdst.x = x;
rcdst.y = y;
SDL_BlitSurface(s, NULL, Screen, &rcdst);
}
Cest bien jolie tout ca si on veut des images fixes, mais si on veut qu´elles bougent ?
Lors de lappel a la variable, nous allons donc :
blitSurface(nom_surface, posx, posy);
Donc, 3 pointeurs !
Alors, que prend le plus de place, 3 pointeurs ou 1 pointeur et un rectangle ?
"une fonction de Vengeur41"
--> Tiens, c´est marrant, j´ai la meme dans mes sources, mais bon... on a du etre nombreux a la programmer.
Cette fonction blit une image qui peut etre mobile dans l´écran de destination (il suffit de changer la valeur de posx et posy), par contre, ça restreint la blitting en blittant TOUTE l´image source
Tu peux aisément changer ça en rajoutant des parametres. A toi de te créer les outils qui te conviennent ![]()
On va dire, jaffiche une image de chien :
blitSurface(chien, 100, 200);
Impossible de mettre des valeurs ici si on veut quela position du chien change !
Car a chaque fois que la boucle passe, la position est remise.
Donc obligation de remplacer 100 et 200 par des pointeurs, et la valeure sera modifié sur le pointeur.
Je ne vois pas d´autre solutions en tout ca.
Ce qui revient a la question :
Que prend le moin de place :
f(z)=z(rectangle)
g(z)=rectangle+z(2*pointeurs)
d´accord, je vois ton soucis
c´est juste une gestion des xpos et ypos
Je te conseille de structurer ton programme de la façon suivante :
vector<SDL_Surface*> Tab_Images;
struct Sprite
{
int im;
int xpos;
int ypos;
}
Tu stockes, une fois pour toutes tes images dans un tableau. (si le "vector" te gene, fait un tableau normal)
Ensuite, chaque sprite est défini par sa position x/y et par une image.
Changer un de ces champs déplace ou anime le sprite. Ensuite, tu manipules des "Sprites" comme des int, tout simplement ! Tu vois le truc ?
Ensuite, c´est simple, tu te fais une fonction :
vois Blit(Sprite& s)
{
blitSurface(Tab_Images[s.im],s.x,s.y);
}
Voila ![]()
slt a tous
j´aimerais que quelqu´un m´explique ce qu´est exactement que la programmation en c++
merci
Merci JYY, mais je ne comprends pas tout pour l´instant.
J´ai re ecrit, sans le vector, et en alliant les deux fonctions, mais je ne suis pas sure que cest juste :
SDL_Surface* Tab_Images[5];
struct Sprite
{
int im;
int xpos;
int ypos;
};
void Blit(Sprite *s)
{
SDL_Rect rcdst;
rcdst.x = s.x;
rcdst.y = s.y;
SDL_BlitSurface(SDL_Surface *Tab_Images[s.im], NULL, screen, &rcdst);
}
Apres pour appeler la fonction, il faut faire ca ?
Blit(raquette);
et pour changer les valeurs x et y d´une image, il faut faire ca ?
raquette.x++;
raquette.y--;
Voila je voudrais encore un petit peu daide sur ces trois points ![]()
voila, c´est ça
un conseil pour la structure (pour etre précis) :décalre la plutot comme ça :
typedef struct
{
...
} Sprite;
et apres, ça se pilote comme tu le dis
La structure te permet d´avoir exactement les données que tu veux dans une seule "boite" si j´ose dire.