Bonjour je m'appelle Alexandre, j'ai 15 ans (à l'écriture du post) et suite à la lecture du cours sur le langage C de m@teo21, j'ai tout d'abord décidé de créer une mini calculette mais je n'y suis pas très bien arrivé. Suite à tout ça j'ai décidé de relire plusieurs fois et entièrement le cours. Tout ceci a porté ses fruits puisque j'ai beaucoup mieux compris le cours. Au final je n'ai jamais fini ma calculette (qui plus est était en console) et je me suis mis a faire un petit jeu de rôle nommé Shaak. Il faut avouer que j'ai mis un certain temps à le développer mais aujourd'hui il est enfin jouable et finissable.
Description du jeu
Le jeu côté joueur
Shaak est un mini jeu de rôle. Il se déroule sur 6 cases.
case 1 : ici se trouve le magasin, la fontaine pour se soigner, de quoi acheter des potions, des armes et des armures.
case 2 à 5 : Ici se trouvent des monstres de niveau 1 et 2 pour la case 2, 2 et 3 pour la case 3, 3 et 4 pour la case 4 et 4 et 5 pour la case 5.
case 6 : Ici se trouve le boss de fin de jeu. Battre ce boss revient à gagner la partie
A chaque fois que vous battez un monstre, vous gagnez de l'or et de l'expérience.
Le jeu côté développeur
Ce jeu bénéficie de différentes petites prouesses techniques telles que :
instauration des accents dans la console à l'aide de wchar.h (table ASCII étendue)
instauration de musiques grâce à la bibliothèque FMOD
existence de système d'expérience, de niveau et d'argent
codes triches pour s'amuser un peu (tapez é au lieu de taper n au tout début du jeu)
ATTENTION : Si vous utilisez les codes triches, si par hasard vous entrez autre chose qu'un nombre toutes les valeurs demandées ensuite seront mises à 0. Ça peut être pratique si vous voulez passer les dernières questions rapidement mais faites quand même attention
Permet de mettre des accents en console. Le type char occupant un octet est remplacé par le type wchar_t occupant 4 octet sur la plupart des ordinateurs. Pour en savoir plus alles voir le tuto de zarthur qui m'a tout appris sur les accents en console.
fmod.h :
Je n'en ai pas une connaissance parfaite mais en tout cas cette bibliothèque permet de gérer toute l'interface sonore d'un programme que les sons soient courts ou longs. J'utilise une fonction dans autre.h appelée musicPlay pour... jouer une musique :p Je pense à rajouter des bruitages un de ces quatre.
windows.h :
Dans cette bibliothèque spécifique à windows, j'utilise une fonction : Sleep(millisecondes_a_attendre). La fonction change légèrement si vous utilisez linux ou mac. En parlant de fonctions spécifiques à windows, j'utilise aussi system("cls"); qui me permet d'effacer le texte à la console. L'équivalent unix est system("clear");
time.h :
J'utilise ce fichier uniquement pour initialiser la fonction rand() qui me permet de tirer un nombre au sort entre MIN et MAX avec la formule suivante : (rand()%(MAX-MIN+1))+MIN; comme le dit m@teo21 dans son cours sur le langage c ici
autre.h :
Celui là est un fichier à moi. J'ai plusieurs fonctions à moi :
scans(chaine_de_caractere,taille_de_la_chaine_de_caractere) : fonction équivalente à scanf("%s",chaine_de_caractere) sauf qu'elle est protégée contre le buffer overflow. Pour en savoir plus allez voir le chapitre sur la saisie de texte sécurisée de m@teo21
scanc(&caractere) : équivalent de scanf("%c",&caractere) sauf qu'elle est sans bugs. Pour en savoir plus regardez le TP du pendu de m@teo21. De plus, sous windows, cette fonction n'attend pas d'appui sur entrée. Ça permet de rendre le jeu plus réactif.
scand(&nombre) : équivalent de scanf("%d",&nombre). Juste pour gagner du temps en tapant la fonction et pour homogénéiser les noms de mes fonctions d'input.
wscanc(&caractere) : équivalent de scanc(&caractere) sauf que wscanc gère les accents
ecrire(texte) : Cette fonction prend comme argument une chaîne de caractères formatée et d'autres variables si besoin derrière. Pour faire simple, elle fonctionne comme printf sauf qu'elle colore toutes les variables en fonction de leur type et gère les "%o" (invention de ma part) qui me servent à forcer un changement de couleur dans le texte facilement.
Si vous voulez recompiler tout ça sous unix, pensez à enlever le #define WINDOWS dans constantes.h
Sachez que je maîtrise bien le C, FMOD et la SDL (pour l'instant je n'ai pas trouvé d'utilité à la SDL dans mon cas). Si vous avez des critiques constructives, des idées d'améliorations ou encore que vous avez détecté un bug, n'hésitez pas : postez un commentaire.
- Edité par alexandre.tsu.manuel 13 juillet 2016 à 2:49:34
vraiment sympas ! je suis moi aussi en train d'apprendre a faire un programme de ce genre . ton rpg est vraiment complet et les musiques rajoutent un coté fort sympathique a l'ensemble.
pas mal ,trop court mais je pense que tu as du mettre du temps a le faire alors je te mets la note de 13.9/20 ce qui est tres bon pour mes critiques habituels
Merci beaucoup pour vos critiques positives. au fait pour la date de commencement j'ai noté la date de création de chacun de mes headers en commentaire donc pour le jouer.h qui était le premier header que j'ai fait je l'ai créé le 06/02/11 à 15h54
Bien sûr j'ai été souvent découragé et j'ai fait pas mal de pauses
En plus j’étaie en fait un peu en train de continuer à apprendre le C en parallèle et qu'en plus de ça mon ordi faisait souvent des sales erreurs de compilation pas évidentes à repérer pour un débutant comme par exemple les différents bugs de la fonction scanf("%c", &caractere). Enfin bon avec tout ça, pas évident de faire un truc qui marche mais c'était facile à partir du moment où les potions étaient en partie faites et où le combat était possible car tout le reste n'était que de petites améliorations. Sinon vous n'auriez pas de petites idées pour ajouter des trucs intéressants. J'ai pensé à instaurer un système de quêtes et un agrandissement de la ville où j'ajouterai par exemple une taverne pour les quêtes, je mettrai la fontaine à l'extérieur et j'ajouterai un magasin de magie pour ceux qui auraient choisis une classe de magicien en début de jeu (j'instaurerai donc un système de classe de personnage (guerrier, nécromancien, magicien, archer, assassin, etc...) Et encore je pensai aussi mettre d'autres villes. Mais ça c'est pour dans longtemps puisqu'il faudrai que j'instaure bien plus de cases et là je pourrai utiliser la SDL et faire une grande carte. Enfin bon c'est encore du domaine de l'impossible pour l'instant
Je vais suivre le projet car tu a l'air motiver, vu ta motivation tu pourrais faire quelque chose de bien avec sa
Bref le système de quête serais vraiment génial ainsi que des races différentes.
Et pourquoi pas une sorte de banque qui permettrais de stoker ses inventaire et les récupérer quand on meurt?
Tous sa ne sont que des hypothèse et c'est TON projet
Alors je te souhaite encore bonne chance, et je suis le projet
J'aime bien l'idée d'un RPG sur 6 cases. T'as pas visé trop haut et ainsi tu as pu produire quelque-chose de jouable. Bonne démarche.
Niveau améliorations, j'imaginerais passer sur un plateau 6x6, avec une case magasin, une case forêt, une case désert, etc... avec des petits graphismes sympa (pixel art) en 2d.
Je suis prêt a te donner un coup de main si ça t'intéresse (zCoach)
@leblognouveau80 : Excellente idée la banque ! Je vais rapidement la mettre en place.
@Lukhan : C'est avec plaisir que j'accepte cette proposition de zCoaching (au passage je suis zCoach en C standard, HTML et CSS) parce que je pense que je vais avoir beaucoup de mal avec les images pour en trouver des bonnes et vu que je suis nul en pixel art si tu pouvais même m'en faire quelques uns (ce ne serai donc plus du Zcoaching mais une pure coopération) ce serai pas mal et le projet pourrai avancer plus vite.
Ouaou c'est vraiment bien fais , seule bémols c'est que quand je finis un combat case 2 , je décide de redécendre case 1 pour me régénérer mais a chaque fois je suis obliger de repasser par la case 2 et op encore un monstre !
J'en profite pour corrigée une petite faute dans ton 1er message , tas mis j'ai 15 ... Met 15 ans
Ouaou c'est vraiment bien fais , seule bémols c'est que quand je finis un combat case 2 , je décide de redécendre case 1 pour me régénérer mais a chaque fois je suis obliger de repasser par la case 2 et op encore un monstre !
J'en profite pour corrigée une petite faute dans ton 1er message , tas mis j'ai 15 ... Met 15 ans
pour la faute c'est corrigé et pour l'autre problème si je comprend bien tu va en case 3 (monstres niv 2 et 3) et tu te retrouve obligé de passer par la case 2 (monstres niv 1 et 2) avant de revenir au magasin (case 1) c'est ça ? Sache que ça fait partie du jeu et que je pense que ce serai bien trop facile si l'on pouvait retourner au magasin "comme ça nimporte où". En revanche tu viens de me donner une idée de nouvelle potion. Ce serai une potion de téléportation qui te téléporte à la case de ton choix à n'importe quel moment du jeu même en combat.
Les musiques sortent du top 100 de jamendo.com
J'en ai juste retouché une : celle du combat contre un monstre, en fait j'ai du couper la première minute car la musique mettait trop de temps à commencer. Pour couper la musique j'ai utilisé mp3 direct cut
Bonjour, juste pour prévenir que je suis en train de préparer l'interface graphique. La carte principale est déssinée sur papier, ses graphiques sont en train d'être faits. Voici toutes les améliorations prévues pour Shaak :
Quêtes
Banque suivant le principe de fonctionnement demandé précédemment par leblognouveau80
Sous terrain caché pour une quête (sa position est dévoilée lors d'une quête)
Classes de personnages (pour l'instant : magicien, guerrier et archer)
Magasins de vente d'objets d'attaques uniques (style bombes)
Création de temple de compétences (pour améliorer son attaque, sa défense ou ses chances de ne pas rater d'attaques ou de coup critiques)
Création d'un casino
Carte de 8 cases x 10 cases (chaque case fait 50px²) avec certains terrains franchissables (herbe, route, pont) et d'autres non (eau, bâtiments)
(désolé pour le retard)
C'est très bien fait même si c'est en console, musique bien choisie, menu bien fait.
Par contre les combats un peu trop répétitifs je trouve (enfin ce n'est que le début, je pense que sa va être amélioré)
Merci beaucoup ! En fait j'avais enregistré vraiment beaucoup de chansons au début. Une bonne vingtaine si vous voulez savoir. Et encore j'avais pris cette vingtaine sur à peu près 200 chansons. Après j'ai refait un tri sélectif et j'ai gardé celles là. Il n'y en a qu'une que j'ai modifié, c'est celle du combat. J'ai coupé juste une minute et demi au début parce que la musique mettait du temps à commencer.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.