µLua DS - Forum officiel | Official forum Index du Forum

µLua DS - Forum officiel | Official forum
Le bon endroit pour en savoir plus sur MicroLua et pour parler de vos projets ! | The right place to learn more about MicroLua and talk about your projects !

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer   ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Gros gros problème ...

 
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Divers -> Hors-sujet
Sujet précédent :: Sujet suivant  

Voulez vous que je publie mon jeu une fois fini ?
Oui
66%
 66%  [ 4 ]
Non
16%
 16%  [ 1 ]
Pourquoi publier une copie ?
16%
 16%  [ 1 ]
Total des votes : 6

Auteur Message
geeker


Hors ligne

Inscrit le: 23 Déc 2012
Messages: 358

MessagePosté le: Mar 30 Juil 2013 - 15:30    Sujet du message: Gros gros problème ... Répondre en citant

Yop tout le monde !
J'ai (très) récemment commencé à apprendre le C (oui c'est pas très original) histoire de varier un peu . (et de faire plus rapide/coder µLua)
J'ai donc voulu coder un jeu Cubique et pixelisé en 3D (qui a dit minecraft ?) pour m'entraîner un peu (zinquiétez pas je suis pas sûr de le publier un jour, c'est juste pour m'entraîner) .
Actuellement j'en suis à la partie "base", c-à-d structures et fonctions de base (newBloc() etc.) .
Et je me heurte à un problème: à la compilation, j'ai plusieurs warnings qui me disent que telle ou telle fonction n'est pas utilisée, mais dès que je les utilises, ça me dit:
code::blocs a écrit:

blocks.c|8|error: initializer element is not constant|


J'ai donc cherché sur le net, et je n'ai trouvé que des trucs où le bug était un pointeur mal foutu (c'est vrai que j'ai quelques problèmes avec les pointeurs ...)
Pour ceux que ça intéresse, j'ai fait une archive avec tout le code dedans: http://bit.ly/13vrnAh
Ça déconne sur "blocks.c" et "basefunc.c" (oui pas de .h, je sais ...) . Le reste à l'air bien .
Vous pouvez tout modifier, tant que ça marche Mr. Green parce que là je commence un peu à désespérer ... Après rien ne vous oblige à m'aider .

Merci de votre aide (ou pas) Wink

EDIT: si mon sujet a rien à faire ici, dégagez-le ...
EDIT2: je poste ici parce que je sais que certains ont de vraies compétences, et que même en HS vous pourrez m'aider .
_________________
Beta-testeur de l'extrème
Tox: FFBDC8B34DC3CDE51F8F1CB0A628147DE740ACD1D44682EB5492A681F6541E32E8D8BB6052B3
CtrµLua: ctrulua.github.io
Des p'tits true, des p'tits true, toujours des p'tits true ...


Revenir en haut
Visiter le site web du posteur
Publicité






MessagePosté le: Mar 30 Juil 2013 - 15:30    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Reylak
Administrateur

Hors ligne

Inscrit le: 24 Nov 2008
Messages: 2 837
Localisation: Toulouse

MessagePosté le: Mer 31 Juil 2013 - 10:53    Sujet du message: Gros gros problème ... Répondre en citant

T'as essayé en disant que Stone est un pointeur sur bloc plutôt ? Je ne sais plus comment on doit gérer les structures mais ça peut être ça.
Sinon, les erreurs incompréhensibles proviennent aussi parfois du fait que tu tentes de compiler en C++ alors que c'est du C, ou vice-versa (consciemment ou non, en tout cas ça m'est déjà arrivé). Si t'as un IDE c'est trouvable dans ses options quelque part.

EDIT : ouais non en fait y a pas de raison que ça soit une histoire de pointeur...
D'après ça, il faut soit que tu enlèves le static de ta fonction newBloc(), soit que tu enlèves le mot-clé "const" devant ta déclaration de structure.

Et oui, publie ton jeu pour rigoler Smile
_________________


Plein d'infos sur le SourceForge !


Revenir en haut
Visiter le site web du posteur MSN Skype
geeker


Hors ligne

Inscrit le: 23 Déc 2012
Messages: 358

MessagePosté le: Mer 31 Juil 2013 - 11:24    Sujet du message: Gros gros problème ... Répondre en citant

Bon tant pis j'ai viré les fonctions problématiques, je laisse le sujet si jamais j'ai d'autres problèmes Wink
_________________
Beta-testeur de l'extrème
Tox: FFBDC8B34DC3CDE51F8F1CB0A628147DE740ACD1D44682EB5492A681F6541E32E8D8BB6052B3
CtrµLua: ctrulua.github.io
Des p'tits true, des p'tits true, toujours des p'tits true ...


Revenir en haut
Visiter le site web du posteur
Quent42340


Hors ligne

Inscrit le: 03 Juin 2009
Messages: 1 388
Localisation: Veauche

MessagePosté le: Dim 11 Aoû 2013 - 22:01    Sujet du message: Gros gros problème ... Répondre en citant

Euh, alors déjà plusieurs choses. Tu tapes des includes sur des .c, c'est pas du Lua hein, c'est du C, et théoriquement on ne fait jamais d'include sur des .c.
La structure d'un .h, le fichier qu'on inclut donc est, pour par exemple header.h:
 
Code:
#ifndef HEADER_H
#define HEADER_H

// ton code

#endif // HEADER_H


Je te dis ça parce que tu as fait du grand n'importe quoi avec tes directives de préproc. ( autrement dit les #... )

Ensuite pourquoi tu définis toutes tes fonctions en static ? Ça j'ai vraiment pas compris.

À la ligne 12 de basefunc.c tu initialises un bloc, soit. Le problème c'est qu'à la ligne 16 tu le retournes. Tu connais le mot clé "local" de Lua ? En C il est induit, c'est à dire que toutes tes variables ne dépassent pas le bloc dans lequel elles sont définies, sauf si tu utilises des pointeurs et de l'allocation de mémoire.

Ensuite tu définis tes struct comme étant const. WTF? J'ai vraiment pas compris pourquoi t'as fait ça, parce que c'est la cause de l'erreur de compilation.

Un conseil pour la présentation de tes structs, au lieu de faire:

Code:
typedef struct MaStructure MaStructure;
struct MaStructure {
    type membre;
};


Fais ça:

Code:
typedef struct {
   type membre;
} MaStructure;


C'est amplement mieux pour des petites structures de ce type.

Après tu fais des fonctions inutiles, du style de linkBloc, elle exécute une seule instruction, alors pourquoi créer une fonction juste pour ça?

Ensuite tu dis ça:

geeker a écrit:
J'ai donc voulu coder un jeu Cubique et pixelisé en 3D (qui a dit minecraft ?) pour m'entraîner un peu (zinquiétez pas je suis pas sûr de le publier un jour, c'est juste pour m'entraîner) .


Regarde ça: https://github.com/Quent42340/KubKraft
C'est le code du début du Minecraft-like que j'ai commencé à créer. C'est pas pour te démoraliser, mais si tu commences le C avec un projet de cette ampleur tu vas jamais t'en sortir. D'autant plus que le C++ est beaucoup plus approprié à la création d'un jeu.

Ensuite je ne vois pas de trace de bibliothèque graphique, et j'ai la vulgaire impression que tu t'es balancé dans le code directement, sans savoir trop où tu allais, et surtout, sans savoir coder en C.

Alors je vais te passer deux liens:
Un tutoriel pour le C
Un autre sur le C++ qui suit le premier.

Les deux sont à lire impérativement et attentivement de A à Z si tu veux savoir coder dans ces langages.

Ce post était des conseils pour toi, c'est pas des reproches, au contraire, je te dis ça pour que tu t'améliores.

Sur ce, bonne chance.
_________________
Mes projets: https://github.com/Quent42340


Revenir en haut
Visiter le site web du posteur
geeker


Hors ligne

Inscrit le: 23 Déc 2012
Messages: 358

MessagePosté le: Lun 12 Aoû 2013 - 12:14    Sujet du message: Gros gros problème ... Répondre en citant

Les static/const, si j'en vire un seul, ça compile plus >_< parce que "ma structure est déjà défine", ou "ma fonction est déjà déclarée", alors des fonction j'en ai viré pas mal, reste plus que linkBloc/linkItem, qui comportent bien plus d'une instruction ^^.
Pour les .c/.h, j'ai beaucoup modifié le code depuis ... Donc j'ai changé pas mal de .c en .h .
Pour la lib grapique, j'ai pris SDL/GL pour une gestion 2D et 3D.Elle est pas encore incluse dans le code que j'ai posté.
Par contre pour le C++, ça a l'air très différent (dans la gestion des variable), et puis c'est de la Poo . Ça ne me posera pas trop de problèmes, il me suffira juste de changer les structures en classes (et d'apprendre le cpp).

Tu me dis "tu t'es lancé sans connaître le C", en fait c'est juste que je débute, je connais pas toute les "astuces", mais quand même pas mal de choses Wink suffisament pour faire un petit menu pour le jeu ! J'ai commencé comme ça avec le Lua.
Ensuite ... là je suis pas chez moi, donc pas d'ordi (vive la dsi pour aller sur le net) et tes liens rentrent pas dans la RAM, mais je les étudis dès que je rentre. Ton astuce pour la déclaration des structures est pas mal ! Mais du coup, elle risque de pas me servir ...

Voilà c'est tout ce que j'avais à dire, j'espère ne rien avoir oublié.
_________________
Beta-testeur de l'extrème
Tox: FFBDC8B34DC3CDE51F8F1CB0A628147DE740ACD1D44682EB5492A681F6541E32E8D8BB6052B3
CtrµLua: ctrulua.github.io
Des p'tits true, des p'tits true, toujours des p'tits true ...


Revenir en haut
Visiter le site web du posteur
Quent42340


Hors ligne

Inscrit le: 03 Juin 2009
Messages: 1 388
Localisation: Veauche

MessagePosté le: Lun 12 Aoû 2013 - 13:02    Sujet du message: Gros gros problème ... Répondre en citant

Bon alors déjà le C et le Lua c'est complètement différent, faut surtout pas comparer.
Tu dis que tu débutes et que "tu connais pas toutes les astuces". Je suis sûr que tu ne sais même pas ce qu'est la différence entre un nombre signé et non signé ( signed et unsigned ).
Je suis sûr que tu ne sais pas faire la différence entre un short, un int et un long, idem entre un float et un double.

Si tu avais ces erreurs, ça veut dire que tu as défini des fonctions dans un .h

En gros ça doit se faire comme ça:

MyStruct.h
Code:
#ifndef MYSTRUCT_H
#define MYSTRUCT_H

typedef struct {
  type membre1;
  type membre2;
} MyStruct;

MyStruct *function(type param);

#endif // MYSTRUCT_H


MyStruct.cpp
Code:
#include <iostream>
#include "MyStruct.h"

MyStruct *function(type param) {
    MyStruct *obj = new MyStruct{membre1, membre2};
   
    doSomething(obj);

    return obj;
}


C'est un pseudo code indiquant la structure de tes fichiers sources.

Déjà si tu te lances dans le C en partant du principe que c'est comme le Lua tu vas te planter royalement.
Tu ne sais rien du C, tu ne savais même pas qu'on inclut pas de .c, et ça, ça fait tout de même partie des bases.
Je suis sûr que tu ne sais pas à quoi correspond le mot clé static.

Enfin bref, ce n'est pas tout, mais il y a pire. Tu veux créer ton jeu avec la SDL et OpenGL. Soit, c'est une très bonne idée.
Mais est-ce que tu connais OpenGL ? Est-ce que tu t'en es déjà servi ? Parce que si ce n'est pas le cas, tu ne vas rien y comprendre.
Tu comptes afficher des cubes avec glBegin(), des glVertex3f() et glEnd() ? Tu vas lamentablement te foirer, va falloir utiliser des VBO, et je ne pense pas que tu sois assez fort pour faire ça tout seul, c'est pas un reproche que je te fais, mais c'est que c'est vraiment trop dur pour un débutant.

Ensuite tu n'as absolument pas réfléchi à ce qui pourrait être dur à faire.
Par exemple, comment tu sais quel cube tu es entrain de regarder ?

Il faut trouver l'intersection entre ta ligne de vision, et le cube qui est bien en face de toi.
Ça demande des capacités de mathématiques qui sont minimum de niveau Terminale S Spécialisation Maths.

Un projet comme ça est vraiment complexe, il ne suffit pas de savoir coder un shell en Lua pour faire ça, donc essaie de faire un jeu en 2D déjà, genre Lumikha de Fanta', même si c'est également dur, ça le serait moins qu'un jeu 3D.
_________________
Mes projets: https://github.com/Quent42340


Revenir en haut
Visiter le site web du posteur
geeker


Hors ligne

Inscrit le: 23 Déc 2012
Messages: 358

MessagePosté le: Lun 12 Aoû 2013 - 13:25    Sujet du message: Gros gros problème ... Répondre en citant

Une variable "unsigned" ne peut contenir de valeurs négatives, mais permet de stocker un nombre 2 fois plus grand qu'une signée.
Les int, short etc. sont des tailles de variables, qui définissent où elles finissent.
Static veut dire qu'une variable reste dans la RAM, et reste à un endroit.
Une variable const reste constante, elle ne peut être modifiée.
Non, je ne sors pas ça du sdz, de wikipédia ou autre, je le savait, c'est tout.
Pour la 3D, il faudrait n'afficher que les cubes qui sont au dessus et en dessous d'une pile, et ceux qui sont visibles, pour éviter les bugs de caméra.
Tu parle d'un niveau Terminale S spec Math, ben ... Je l'ai pas encore ... Mais google est mon ami pour ce genre de calculs (je fais déjà de l'algo en 3ème, alors qu'en cours on calcule le volume d'un cube).
Rien à rajouter, si ce n'est que ce ma plus grosse difficulté c'est la gestion des sauvegardes (un peu lourd) et le générateur de monde (un peu plat, même si pour l'instant je vois rien), et que je ne compare pas le Lua au C.
_________________
Beta-testeur de l'extrème
Tox: FFBDC8B34DC3CDE51F8F1CB0A628147DE740ACD1D44682EB5492A681F6541E32E8D8BB6052B3
CtrµLua: ctrulua.github.io
Des p'tits true, des p'tits true, toujours des p'tits true ...


Dernière édition par geeker le Sam 12 Mar 2016 - 01:12; édité 1 fois
Revenir en haut
Visiter le site web du posteur
Quent42340


Hors ligne

Inscrit le: 03 Juin 2009
Messages: 1 388
Localisation: Veauche

MessagePosté le: Lun 12 Aoû 2013 - 14:44    Sujet du message: Gros gros problème ... Répondre en citant

Soit, fais donc ton truc, j'ai hâte de voir ce que ça va donner.
_________________
Mes projets: https://github.com/Quent42340


Revenir en haut
Visiter le site web du posteur
Reylak
Administrateur

Hors ligne

Inscrit le: 24 Nov 2008
Messages: 2 837
Localisation: Toulouse

MessagePosté le: Lun 12 Aoû 2013 - 18:04    Sujet du message: Gros gros problème ... Répondre en citant

Ne lui fais pas peur en rajoutant "spé maths" pour la réflexion mathématique en 3D, la spé t'apportera rien du tout. Là c'est du bordel avec les vecteurs et des droites dans l'espace. Avec de la persévérance on y arrive en terminale. En 3ème par contre ça va piquer, rien que sans un produit scalaire par exemple ça pourrait être pénible (je dis ça un peu au hasard j'y ai pas réfléchi, mais depuis mon bac+2 je sais que c'est bien utile pour ce genre de problèmes).
Il est peut-être possible d'éliminer ce problème d'une manière ou d'un autre en limitant le gameplay, qui sait.

En tout cas, même si je rejoins un peu Quent pour le fait que tu risques fort de ne pas en voir le bout, essaie de faire plein de morceaux simples de ton jeu, par exemple l'affichage simple des cubes, ou la génération du monde (ça c'est de l'algorithmique sympa et massive). Et si tu arrives à assembler tout ça c'est tant mieux Wink
_________________


Plein d'infos sur le SourceForge !


Revenir en haut
Visiter le site web du posteur MSN Skype
Negi


Hors ligne

Inscrit le: 16 Avr 2013
Messages: 103
Localisation: Somewhere around Pluto

MessagePosté le: Lun 12 Aoû 2013 - 21:29    Sujet du message: Gros gros problème ... Répondre en citant

J'y connais pas grand chose en C, je débutes moi aussi, mais avant même de tenter quoi que ce soit de graphique, tu devrais essayer de travailler en console. Un exemple que je peux te donner est celui-ci : http://progdupeu.pl/forums/sujet/31/c-castle-war


Ce mec connait le C depuis un moment déjà, et rien que la gestion de base de son jeu, il en chie. Il a pas encore entamé le GUI qu'il rame à mort dans sa réflexion. Pour te dire que un jeu en 3D, ce serait horriblement dur. Essayes de recoder le programme "Aventure" en C tiens ! :p C'est déjà un bon challenge à ton niveau :3
_________________
Projet Actif : mkdz

φ

µStore
LLUL
Civi
HS-SRPG
Beaucoup d'autres...Trop T_T



Revenir en haut
Visiter le site web du posteur GTalk/Jabber
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 09:32    Sujet du message: Gros gros problème ...

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Divers -> Hors-sujet Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com