Pour tuer le confinement je me suis remis à programmer

Nicolas3366

Grand Maître
#41
tout s'apprend j'"en suis la preuve.
Faudrait que j'essaie j'ai toujours eut envie de monter un petit jeu vidéo en 2D. Le codage me fait pas peur,

mais comment passer du code a un rendu graphique comme le jeu de carte vu plus haut dans la discussion ? La j'y connais absolument rien.
 

magellan

Modérâleur
Staff
#42
Faudrait que j'essaie j'ai toujours eut envie de monter un petit jeu vidéo en 2D. Le codage me fait pas peur,

mais comment passer du code a un rendu graphique comme le jeu de carte vu plus haut dans la discussion ? La j'y connais absolument rien.
Question très simple, réponse très complexe hélas.

En trèèèèèèès caricaturé.
On peut distinguer le développement avec du graphisme en deux catégories
- La gestion des graphismes est intégrée à l'outil et tu as ce qu'il faut pour construire l'affichage
- La gestion graphique est à la charge totale du développeur.

Dans le cas du jeu de cartes, tu as un outil derrière sur lequel on conçoit le jeu. Fondamentalement (toujours en grossier) on a un "objet" graphique qu'on manipule à sa guise.

De là, tu as des étapes d'architecture à comprendre pour pouvoir envisager de faire un jeu.
- Quoi afficher
- Comment traiter les évènements
- Comment stocker l'enchainement des évènements
- Comment présenter au joueur les situations

Cela veut dire:
- Du code pour gérer les graphismes
- Du code pour gérer les règles de combats par exemple
- Du code pour afficher les interactions issues des choses précédentes.

Sans notion de codage de base, difficile de te lancer là-dedans. Il existe des constructeurs de jeux "basiques" qu'on peut pousser très loin. Tu as par exemple RPG Maker (payant)
https://store.steampowered.com/app/363890/RPG_Maker_MV/?l=french

C'est extrêmement puissant et cela impose énormément de réflexion. Cela t'apprend les fondamentaux de game design, et tout est hautement modifiable avec du code intégré. ça te décharge de beaucoup d'éléments (couche graphique notamment).


Tu as aussi ça en version de test (pour éviter de payer)
https://www.rpgmakerweb.com/downloads
 

andre.gerald

Grand VidéaVizir
#43
comme le jeu de carte vu plus haut
Nicolas le jeu de carte (Belote à la contrée)
Je pense que c'est celui là dont tu parles ;)
j'avais dessinée toute les cartes à la main :D avec un petit soft que j'avais fait en turbo Pascal.
Pas internet à l'époque !
Et les photo des 4 joueurs mon plus jeune fils ma femme et un copain avait été faite avec un des premier APN sorti sur le marché qui faisait des photos en résolution VGA :D
Je peux le mettre en téléchargement sur le net, j'ai le programme d'installation qui fonctionne encore très bien mais comme dans A propos de y a mon nom et prénom faut que je retouche le code (je l'ai encore) et refasse une install plus anonyme.
J'aime pas spécialement laisser trainer mes coordonnées sur le net .
Pour activer les sons j'ai du, sur W10, associer les Wave à VLC qu'il faut réduire ensuite.
je me suis tapé quand même plus de 10 000 lignes de VB6.
Faire ça en assembleur ou en C ou C++ aucun intérêt.
 

Nicolas3366

Grand Maître
#44
Lol déjà que je comprends pas les jeux de cartes je vais certainement pas coder un jeu de carte ^^.

Je pense plus a un jeu du style le joueur controlerai une souris dont le but serait de ramasser des fromages, un peu un clone de snake car ca se passerait dans un environnement rectangulaire et puis je rajoute un chat dont le but principale et d'attraper la souris. Après pour pas non plus faire trop compliqué j'aurais bien envie de faire ca en n'autorisant que les déplacements orthogonaux pour pas non plus trop compliqué les choses

Je pense pas besoin de 60k ligne si ? :D Et vous me conseillerais quel language ? Moi je pensais bien a du Java script ou du Python
 

andre.gerald

Grand VidéaVizir
#45
Ensuite Nicolas un jeu d'action même en 2D c'est surement plus difficile à programmer voir post de @magellan ;)
J'ai bien fait quelques petites animation dans mon jeu mais c'était très basique
 

andre.gerald

Grand VidéaVizir
#46
Lol déjà que je comprends pas les jeux de cartes je vais certainement pas coder un jeu de carte ^^.
:lol::lol::lol::lol:
Je ne jouais jamais aux cartes ..Mes fils étaient spécialistes de la Contrée
J'ai appris la Contrée en la programmant :D:D a partir des règles du jeu.
Le beau frère de mon fils ainé l'avait installé chez lui pour y jouer
et comme on peut sauver les donnes, quand il trouvait des choix de cartes critiquables il m'envoyait la donne par mail et j'améliorais au mieux ma procédure choix de carte.
j'ai stoppé tout ça en 2005 je crois ...Mais il a fallu plusieurs années pour qu'il soit au point !
Le plus dur c'est les annonces où y a pas mal de subtilités difficile à coder !
 

Nicolas3366

Grand Maître
#47
Ensuite Nicolas un jeu d'action même en 2D c'est surement plus difficile à programmer
Bah écoute j'aime les défi et je vais relever celui celui-là ^^ puis comme le dit ta discussion avec le confinement va il y avoir du temps a abattre ^^

:lol::lol::lol::lol:
Je ne jouais jamais aux cartes ..Mes fils étaient spécialistes de la Contrée
J'ai appris la Contrée en la programmant :D:D a partir des règles du jeu.
Le beau frère de mon fils ainé l'avait installé chez lui pour y jouer
et comme on peut sauver les donnes, quand il trouvait des choix de cartes critiquables il m'envoyait la donne par mail et j'améliorais au mieux ma procédure choix de carte.
j'ai stoppé tout ça en 2005 je crois ...Mais il a fallu plusieurs années pour qu'il soit au point !
Le plus dur c'est les annonces où y a pas mal de subtilités difficile à coder !
Lol moi je m'y connais absolument pas en carte tu me parle de belotte contrée... euh oui ? :D
 

svoglimacci

check memory failed but no bug detected
#48
Je me souviens maintenant avoir développé un jeu de cartes "Bataille " donc le jeu de cartes le plus simple au monde, avec des cartes scannées. La spécificité du jeu était qu'il jouait ordi contre lui même avec une petite pause de 1 seconde à chaque fois pour que je puisse regarder les cartes. Passionnant :D
 

magellan

Modérâleur
Staff
#49
Bah écoute j'aime les défi et je vais relever celui celui-là ^^ puis comme le dit ta discussion avec le confinement va il y avoir du temps a abattre ^^


Lol moi je m'y connais absolument pas en carte tu me parle de belotte contrée... euh oui ? :D
60K Lignes? C'est rien du tout hélas :/

Soyons clairs: le développement, c'est énormément de lignes de codes très obscur, et ensuite une fois le tout groupé ça commence à présenter un truc.

Pour les langages? Te conseiller un truc par quoi commencer serait méchant de ma part parce qu'il va te manquer énormément de fondamentaux!

Alors dans l'ordre
1° Comprendre la logique booléenne. ça n'a l'air de rien, mais si tu comprends cela tu comprendras ensuite le comportement de ton environnement.
2° Comprendre et appréhender l'algorithmie. C'est fondamental pour trois raisons
- Transformer une réflexion en code
- Rendre le code fonctionnel, rapide et compréhensible
- Savoir trouver où sont tes erreurs
3° Comprendre et maîtriser l'organisation technique d'un projet.

Ce dernier point est le plus difficile à saisir car il y a autant de cadres qu'il y a de développements!

Je vais te faire les trois points précédents en texte (attention pavés)

1° La logique booléenne
L'algèbre de Boole (pas d'humour c'était son nom), c'est de faire des mathématiques avec des éléments simples. Très grossièrement, c'est "comment traiter des choses qui disent oui/non pour obtenir un résultat final".
Les bases du booléen c'est qu'une entrées est un vrai/faux qu'on appelle "booléen" (ça tombe bien). Chaque entrée est définie par une lettre. Par exemple, prenons une lampe que tu veux allumer avec trois boutons a b et c.
Tu mets en règles littérales pour obtenir l'équation de Boole. Admettons L est ta lampe.
L=ab+c
L=abc
L=ab+bc
ça dit quoi:
* le "+" est un ou
L'absence de signe (ou le point) est un "et"
donc dans l'ordre
L= (a et b) ou C-> Si tu as C qui est vrai, alors L s'allume. Sinon, il faut que ce soit a et b ensemble pour que ça marche.
L= a et b et c.-> Tu as besoin de trois pour allumer L
L=(a et b) OU (b et c)-> Tu as forcément deux interrupteurs en simultané (ab ou bc) pour que L s'allume.

Donc de là tu peux établir des règles extrêmement complexes. Tiens, pour le "fun" ça peut donner une règle du genre
- Si a (est vrai) et que b non, ou que c est vrai et d en même temps, tout ça SAUF si f est allumé...
Tu vois le genre...

22° L'algorithmie
GROS morceau. LE morceau indispensable. LA base. LE truc qui me rend dingue quand quelqu'un ne sait pas ce qu'il fait.
Pour moi la définition la plus juste de l'algo c'est
Transcrire des règles écrites sous la forme d'un comportement logiciel
Pour te donner une idée, c'est transformer
"Tant que le perso a assez de vie, afficher sa jauge de vie"
en (pseudo code)
Code:
while (live>0)
{
live.gauge(live)
}
C'est très grossier dit comme ça, mais c'est l'idée.

En algorithmie, les bases sont
- Les conditions
- Les boucles
Les conditions sont les "tests"
-> "Si telle valeur vaut x, alors faire un truc, sinon faire autre chose"
Cela se matérialise comme ceci
JavaScript:
if(valeur=x)
{
faireUnTruc
} else {
FaireAutreChose
}
ça c'est le cas "simple.
Tu peux avoir en tests une valeur que tu veux vérifier selon plusieurs valeurs.
Par exemple un test dans un JDR selon le niveau de vie
JavaScript:
int statLive = round(life/100;2); // On a le pourcentage de vie courant arrondi à deux après la virgule fonction "round"
level=~~(statLife/25)
// Là j'explique: On fait une division du pourcentage de vie (0-100%) par 25 pour avoir quatre niveaux
// 0 <=25%
// 1 compris entre 25 et 50%
// 2 compris entre 50 et 75%
// 3 compris entre 75 et 100%
// 4 full vie


switch(level)
{
case(0):
// Perso mal barré
if(lifeStat=0)
{
// on gère la mort du personnage
proceedDeath();
} else {
// On avertit avec le niveau en rouge
blinkLifeLevel(statLife;"red")
}
break;
case(1):
// on avertir en orange le niveau de vie
blinkLifeLevel(statLife;"orange")
break;
case(2):
// On avertit le niveau moyen en mettant à jour en jaune la jauge de vie
blinkLifeLevel(statLife;"yellow")
break;
case(3):
// Vie comprise entre 75 et 100
case(4):
// Vie à 100%
default:
// On ne fait rien s'il n'y a pas de valeur conforme ou que le niveau de vie est conforme.On affiche tout de même la vie
blinkLifeLevel(statLife;"blue") 
}
Là tu vois on dit
- Si la vie est inférieure à 25% on alerte en rouge
- Si la vie est comprise entre 25 et 50, alerte en orange
- Si la vie comprise entre 50 et 75, alerte en jaune
- Sinon on affiche la jauge en bleu

La méthode blinkLifeLevel prend deux paramètres:
- Le niveau de vie en pourcentage (pour afficher une jauge)
- Le codage couleur de fond afin d'informer le joueur de son niveau et du danger.

Petites subtilités:
- J'utilise en entrée une division qui me retourne la valeur entière pour avoir un "niveau". C'est le principe du "modulo" (ou de la division euclidienne pour ceux qui se souviennent)
- Le switch case que j'utilise est préparé pour traiter les éventuelles évolutions ultérieures.

Là dans cet exemple précis:
JavaScript:
case(1):
// on avertir en orange le niveau de vie
blinkLifeLevel(statLife;"orange")
break;
Le break fait sortir du test de valeur. En gros, si "level" vaut "1", alors j'exécute blinkLifeLevel(statLife;"orange") .

Là où je ruse pour les évolutions c'est sur ce bout de code précis
JavaScript:
case(3):
// Vie comprise entre 75 et 100
case(4):
// Vie à 100%
default:
Je dis que 3 4 et par défaut je fais la même chose. Pourquoi? Parce que je ne mets pas de break!

L'avantage? Passons sur un autre exemple
JavaScript:
switch(level)
{
case(5):
case(8):
faireuntruc()
break;
case(99):
faireAutreChose();
default:
FaireEncoreautrechose();
}
ça dit quoi?
Si la valeur "level"
- égale à 5 ou 8 : j'exécute faireuntruc()
- égale à 99 : j'exécute faireAutreChose()
- Pour les autres valeurs (clé "default) j'exécute FaireEncoreautrechose()

Voilà le premier exemple de "tests" sur des valeurs.
Je passe ensuite sur les boucles ... histoire que tu en saisisses la complexité et la subtilité selon les situations.
 

andre.gerald

Grand VidéaVizir
#50
Je me souviens maintenant avoir développé un jeu de cartes "Bataille "
Bin oui j'avais fait ça d'abord ...Mais c'est mon fils que ça a fait rigoler et qui m'a lancé le défi de la Belote à la contrée.
Il a fallu qu'il m'explique bien les règles car en plus je n'y avais jamais joué.

La programmation quel que soit le langage utilisé c'est toujours un défit !

Quand mon ainé était en SUP son prof lui avait demandé de programmer un truc qui faisait addition soustraction multiplication division des polynômes en turbo Pascal.
il lui avait donné une bonne partie de la "recette".
comme ça m'amusait aussi je l'ai fait avec un interface plus soigné que mon fils

Le code en Pascal de ce programme était magnifique et montrait une bonne partie de la puissance de ce langage...je l'ai perdu sur un Cyrix 166+ qui est partie en fumé un jour :D
Les PC à base de cyrix certains ont du connaître ici ;)
 

SergioVE

Grand Maître
#51
2° L'algorithmie
GROS morceau. LE morceau indispensable. LA base. LE truc qui me rend dingue quand quelqu'un ne sait pas ce qu'il fait.
Pour moi la définition la plus juste de l'algo c'est :
Transcrire des règles écrites sous la forme d'un comportement logiciel
Historiquement, ta proposition de définition est erronée : l'algorithmie (même si elle ne portait pas ce nom inspiré d'Al-Khwarizmi) était déjà connue et enseignée par Euclide et n'a donc pas besoin de logiciel pour exister.
Larousse propose "ensemble de règles opératoires dont l'application permet de résoudre un problème au moyen d'un nombre fini d'opérations".
On peut traduire ta définition par "transcrire un algorithme dans un logiciel", ce qu'on peut résumer en "programmer un algorithme" et donc ta définition se mord la queue...
Ce qui ne retire rien à l'importance primordiale que tu accordes à la chose dans l'art (n'ayons pas peur des mots) de la programmation.

Si tu ne l'as pas déjà fait, je ne peux que t'engager à te procurer le livre passionnant d'Aurélie Jean "De l'autre côté de la machine, voyage d'une scientifique au pays des algorithmes" éditions de l'Observatoire.
 
Dernière édition:

magellan

Modérâleur
Staff
#52
Historiquement, ta proposition de définition est erronée : l'algorithmie (même si elle ne portait pas ce nom inspiré d'Al-Khwarizmi) était déjà connue et enseignée par Euclide et n'a donc pas besoin de logiciel pour exister.
Larousse propose "ensemble de règles opératoires dont l'application permet de résoudre un problème au moyen d'un nombre fini d'opérations".
On peut traduire ta définition par "transcrire un algorithme dans un logiciel", ce qu'on peut résumer en "programmer un algorithme" et donc ta définition se mord la queue...
Ce qui ne retire rien à l'importance primordiale que tu accordes à la chose dans l'art (n'ayons pas peur des mots) de la programmation.

Si tu ne l'as pas déjà fait, je ne peux que t'engager à te procurer le livre passionnant d'Aurélie Jean "De l'autre côté de la machine, voyage d'une scientifique au pays des algorithmes" éditions de l'Observatoire.
Je précise : dans notre cadre de programmation évidemment.
 

SergioVE

Grand Maître
#53
Je précise : dans notre cadre de programmation évidemment.
Certes, mais dans ta proposition de définition de l'algorithme tu dis "règles écrites" : mais c'est ça l'algorithme, l'ensemble des règles écrites pour résoudre un problème, ce n'est pas leur transcription en langage informatique.
 

andre.gerald

Grand VidéaVizir
#55
En parlant de programmation mon fils a le problème suivant à résoudre:
Copie collé de son Mail:
J’ai une application web qui capte par défaut le flux vidéo de la webcam et audio du micro de l’ordinateur puis le diffuse en live (streaming) à mes participants connectés.

Les développements sont réalisés en java-script au niveau du navigateur web et appelle les APIs d’un fournisseur de streaming qui nous permet la diffusion en live.



On nous demande souvent aujourd’hui de réaliser les vidéos (comme les émissions télévisées) dans un studio de production équipé : Caméras, micros, logiciel de transformation et production vidéo… On ne gère pas du tout cette partie.



Notre seul besoin consiste à identifier la source vidéo issue du studio (du logiciel à mon avis intégré au studio) pour l’utiliser en tant que source de diffusion dans notre appli web.



Voici une instruction java-script permettant de dresser la liste des sources disponibles, si celle-ci apparaît là-dedans cela pourrait suffire.



Pour avoir la liste des devices disponibles dans Chrome => console dev java-script : navigator.mediaDevices.enumerateDevices();



J’espère que c’est assez clair J
si l'un de vous a des idées pour l'aider ..Perso je cale
Merci d'avance
André

PS si on peut l'aider je peux lui proposer de s'inscrire ici ..Je lui ai dit que ce forum était efficace, parcouru par des connaisseurs, et très sympa !

"Voici une instruction java-script permettant de dresser la liste des sources disponibles, si celle-ci apparaît là-dedans cela pourrait suffire."
J'ai rien vu sur son mail !!!!
pourrait-il se faire dépanner ici si il venait ?
 
Dernière édition:

magellan

Modérâleur
Staff
#56
Ce bout de code:
JavaScript:
var test;
test = navigator.mediaDevices.enumerateDevices();
La variable test va posséder la liste des équipements connectés.
Ensuite tu as sûrement du test. quelque chose pour appeler le matériel qui doit être piloté. (à vérifier je n'ai pas tenté l'expérience)

et ensuite intégrer les objets dans le formulaire idoine.
https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices

Tu as tout dans lien: note notamment que cela devient des objets stream
JavaScript:
f (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
  console.log("enumerateDevices() not supported.");
  return;
}

// List cameras and microphones.

navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
  devices.forEach(function(device) {
    console.log(device.kind + ": " + device.label +
                " id = " + device.deviceId);
  });
})
.catch(function(err) {
  console.log(err.name + ": " + err.message);
});
(cf l'exemple du lien)
PS: cherche systématiquement les noms de méthode dans Google. Il y a un florilège de commandes disponibles et documentées. Et là qui plus est, c'est totalemùent natif pour choper les équipements.

L'appel à l'API du site elle sera documentée ailleurs.
 
Dernière édition:

magellan

Modérâleur
Staff
#57
En parlant de programmation mon fils a le problème suivant à résoudre:
Copie collé de son Mail:


si l'un de vous a des idées pour l'aider ..Perso je cale
Merci d'avance
André

PS si on peut l'aider je peux lui proposer de s'inscrire ici ..Je lui ai dit que ce forum était efficace, parcouru par des connaisseurs, et très sympa !

"Voici une instruction java-script permettant de dresser la liste des sources disponibles, si celle-ci apparaît là-dedans cela pourrait suffire."
J'ai rien vu sur son mail !!!!
pourrait-il se faire dépanner ici si il venait ?
Pour te répondre: oui, si ses questions sont structurées;)

On ne fera évidemment pas le projet à sa place. De toute façon, comme je le dis dans le post précédent "Google est ton meilleur ami".
Comme là on est sur une commande Js native, tout est documenté et ça ne manque pas d'exemples sur le net.

PS: si ton fiston parle/comprend le rosbif, stackoverflow sera son meilleur ami, et en complément https://developer.mozilla.org

(par exemple)
https://stackoverflow.com/questions...tedevices-not-display-device-label-on-firefox
 

svoglimacci

check memory failed but no bug detected
#58
@magellan, je le savais déjà pour d'autres choses mais tu es un fou furieux de la programmation :merci:
 

Patakesse

Expert
#59
Il n'a fait que republier l'exemple de la doc de la fonction ;)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Membres en ligne
  • hein
Derniers messages publiés
Statistiques globales
Discussions
845 276
Messages
7 569 256
Membres
1 582 997
Dernier membre
Xullragh
Partager cette page
Haut