Forum Liberty Basic France

Jeux » Un jeu à la c.. ou l'arroseur arrosé
Le 13/09/2020 à 06h54

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 741
Ca pour un jeu à la c.. c'était un jeu à la c.. !!!

J'ai dû rêver, ou fumer le chocolat du mauvais coté, ou j'ai pas fait attention à la date... J'étais persuadé qu'il y avait un début de sujet à propos d'idée de jeu, et je me trouvais malin d'y répondre sur un mode décalé, et vlan ! le temps que j'interprète à ma façon le cahier des charges, l'existe plus ! ou l'était sur un autre forum ! et je me retrouve avec mon interprétation sur les bras, sans plus aucun endroit pour la poster ! L'arroseur arrosé, vous dis-je !

Voilà le prototype:
Code VB :
 
nomainwin
 
'alors ça commence :
nbm=54
navg=10
etape=1
 
[mots]  'au final, ce sera un vrai dictionnaire, pour l'instant c'est un jeu de test
    data "...","!"," ",",","ah","alors","arrive","aviron","bah","bain","bien","but","c'est","camion","chien"
    data "cliquer","d'un","eh","et","ermitage","fous","firme","goal","je","jeu","l'histoire","la","là","lancer"
    data "laver","le","mais","malin","mi-temps","moi","oui","paf","patrouille","pour","qu'est-ce","que","qui"
    data "quidam","rue","sifflet","super","traverse","ultime","une","vitesse","voiture","xylophone","Zéphir","?"
 
    'mettre le dictionnaire en tableau
    dim dico$(nbm+1) 'garder la première case vide, peut servir pour idée future
    for a=1 to nbm
        read a$
        dico$(a)=a$
    next
 
[egmi]    'encoder les grappes en mitaines inverties
    data "461 030 251 032 020 037 020 039 027"
    data "161 036 390 032 293"
    data "061 048 036 132 037 265 038 172 034 156 038 429 030 475 032 270 034 446"
    data "361 040 035 192 030 064 034 542"
    data "491 032 517 038 073"
    data "191 034 067 543"
    data "091 032 060 034 540 542 544 030 181 039 110 032 371 037 312 033 152 034 023"
    data "051 034 134 034 333 030 022 023 024"
    data "051 037 053 039 057 038 028"
    data "321 032 402 037 245 030 213 039 285 043 034 355 034 549"
 
    dim mce$(navg) 'micro-chip de l'encodeur
    restore [egmi]
    for a=0 to navg-1
        read a$
        mce$(a)=a$
    next
 
    dim boulier$(navg)  'comptabilisation arrière et compensation d'assiette
    for b=0 to navg-1
        boules$=""
 
        'nombre de cuves dans l'entrepôt
        espace=0
        for a=0 to len(mce$(b))-1
            if mid$(mce$(b),a,1)=" " then espace=espace+1
        next
 
        'exploration cuve après cuve pour reconstitution du cru
        for a=1 to espace+1
            'séparation préliminaire
            cuvelier$=word$(mce$(b),a," ")
            drcuv$=right$(cuvelier$,1)
            gacuv$=left$(cuvelier$,2)
 
            'adjointure des levures
            mout$=dico$(val(gacuv$))
            if drcuv$="1" then
                prem$=upper$(left$(mout$,1))
                mout$=prem$+right$(mout$,len(mout$)-1)
            end if
 
            boules$=boules$+mout$
        next
 
    'on termine la reconstitution
    boulier$(b)=boules$
    next
 
   'raccourcissement de la complexification, première phase
    WindowWidth = 480
    WindowHeight = 230
 
    UpperLeftX=int((DisplayWidth-WindowWidth)/2)
    UpperLeftY=int((DisplayHeight-WindowHeight)/2)
 
    texteditor #main.dial, 20, 15, 440, 100
    button #main.cause, boulier$(1), [ehalors], UL, 20, 130, 440, 35
    menu #main, "Edit"
 
    'raccourcissement de la complexification, seconde phase
    open "Super Jeu" for window as #main
    #main, "trapclose [yenamarjmebar]"
    #main, "font ms_sans_serif 10"
    #main.dial, boulier$(0)
    wait
 
'**** annexes aux contrats détarés de la plus-value endorphine amputée des profits avant récolte

[ehalors]
    #main.cause, ""
 
    select case etape
        case 1 : te=2 : bt=3
        case 2 : te=4 : bt=5
        case 3 : te=6 : bt=7
        case 4 : te=8 : bt=9
    end select
 
    #main.dial, boulier$(te)
    gosub [tempor]
    #main.cause, boulier$(bt)
 
    if etape>3 then gosub [yenamarjmebar] else etape=etape+1
    wait
 
[tempor]
    fintempo=time$("ms")+500
    while time$("ms")<fintempo
    wend
    return
 
[yenamarjmebar]
    confirm "Votre avis ?" + chr$(13) + "Quitter ce jeu à la xxx !";jfaisquoi$
    if jfaisquoi$<>"yes" then notice "eh bien je quitte quand même !"
    close #main
    end
 


et bon dimanche
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 13/09/2020 à 10h39

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2440
Style Visual Novel en très épuré, j'aime bien. Du Gacha Life pour non voyant
Note: 10/10 (-2 pour fin intolérable); concept 'porteur" à exploiter.

EDIT: Oh purée...J'avais pas vu le code et les commentaires.

reEdit: Hey, il manque la règle d'encodage

Pour la [tempo] si on présume que le "timer" suspend le programme (un compteur tournant dans un coin (dont on ignore le fonctionnement (qui est peut-être celui que tu a adopté (comparaison de nombres; le programme tourne)))).
____________________
Roro

   
Le 13/09/2020 à 16h16

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 741
Merci pour le (10-2)/10 ;)

Je me suis fais plaisir sur ce coup-là, d'autant plus que c'était tout à fait improvisé et inattendu. On pouvait faire beaucoup plus simple, mais ça aurait été bien moins mystérieux...

Il m'a bien fallu plus de 6 heures de travail pour passer de l'idée au résultat, définir la stratégie et me souvenir du fonctionnement et des paramètres des instructions. Pas grave, je suis en congés... Et j'ai rêvé, l'historique de mon navigateur ne se souvenant pas de m'avoir vu consulter une page parlant de projets de jeux. Alors là, je me suis planté quelque part ou j'hébahise... Peut-être une interférence entre des mondes parallèles... ("non, me dit pas qu'il est sérieux, là" ;) )

L'étape suivante que j'envisageais pour le programme était de rendre les grappes en mitaines inverties sous la forme d'un bloc compact, comme une matrice de 8x8, car là, Bruni, on devine trop facilement que chaque ligne de nombres est une phrase, les deux premiers chiffres donnant le numéro d'ordre du mot dans la liste des datas, et le dernier, quand il vaut "1", demandant d'écrire la première lettre du mot en majuscule. Mais j'arrête là, je suis déjà bien content de reprendre à l'occasion un petit délire basicalistique.

Citation:
Hey, il manque la règle d'encodage

Pas grave, il peut fonctionner sans, c'est du code "à la Terminator"

Citation:
Pour la [tempo] si on présume que le "timer" suspend le programme

Je me souviens avoir trop galéré sur ce timer pour avoir eu envie de me re-souvenir de comment il fonctionnait (la fameuse discussion sur l'horloge binaire), ici ce n'était pas grave si la tempo maison monopolise l'exécution du programme pour une demi-seconde.

Une évolution amusante serait de jouer avec l'affichage caractère par caractère, autant sur le texteditor que sur le bouton, ou de faire défiler la phrase, cà devrait pas être très compliqué à gérer avec les instructions de chaines existantes, et avec une temporisation adéquate entre chaque affichage pour garder la main sur la vitesse de défilement.

Voili



Edité par Christophe Le 13/09/2020 à 16h17
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 13/09/2020 à 16h55

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2440
Citation:
il manque la règle d'encodage-->: Pas grave, il peut fonctionner sans

Un: "...07ah","08alors","09arrive","10aviron","11bah..."; éviterait de devoir compter dans la liste, ce qui est assez fastidieux
____________________
Roro

   
Le 13/09/2020 à 17h16

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 741
Justement, le but était de garder un peu de mystère, là tu en donnes la clef. J’aurais pu le faire et supprimer les 07, 08, 09 au moment de publier, mais je n'y ai pas pensé.

(c'est vrai que ce n'était pas évident de compter les mots, j'avoue, surtout quand il fallait en rajouter en respectant l'ordre alphabétique) ;)
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 13/09/2020 à 18h51

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2440
J'avais commencé un truc du genre: Terre Eau Air Feu Energie
Avec Eau+ Feu=Vapeur; Terre+ Eau=Boue; Terre+ Feu=Pierre; Pierre+ Energie=Maison...ect...
En essayant de trouver une formule pour pointer sur les mots; mais je me suis perdu.
____________________
Roro

   
Le 11/10/2020 à 18h56

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 741
'et pour ma part, ça marche car je me cantonne à des codages simples, je suis pas très doué en cryptologie ;)

Salut les codeurs fous !

J'avais dit dans une autre discussion que je reprendrais l'exemple ci-dessus parce qu'il n'était pas terminé, le bloc des data n'étant pas "carré". Le but était d'avoir, en un listing des plus abscons, la résurgence du gag de la montagne qui accouche d'une souris. Je m'étais bien amusé, mais l'amusement étant passé, je reviens cette fois-ci avec une organisation plus rationnelle, sans commentaires décoiffants, et mon bloc de data sous forme d'une matrice de 10*8 nombres, bloc qui contient les phrases qui seront affichées à l'écran...

Pour les nouveaux qui découvrent JB/LB, on a utilisé des boucles FOR/NEXT et WHILE/WEND, des conditions IF/THEN/ELSE et SELECT CASE. Le code n'est pas très compliqué, et on peut essayer de comprendre le qui-fait-quoi sans trop de difficulté. Sinon rien n'empêche de poser la question.

On a aussi utilisé des DATA, instruction basic datant de la profondeur des temps géologiques, avec une méthode pour placer ces datas en tableaux, et pouvoir les utiliser commodément. L'utilisation des datas répond habituellement à un usage bien particulier, principalement pour définir des données en grand nombre qui n'auront pas de raison de varier durant l'exécution du programme, et qu'il serait enquiquinant de, ou qu'on ne voudrait pas, définir d'une autre manière. Ici, on ne fait que lire un bloc de données, toujours le même à chaque exécution, donc le recours aux DATAs est tout à fait pertinent.

Le code :
Code VB :
 
nomainwin
 
[mots]  'une histoire d'il y a cinquante ans :
    data "Vers huit heures du matin arrive à la station-service une voiture"
    data "Son conducteur en descend, mais ne trouve pas âme qui vive"
    data "Un riverain lui annonce alors que le pompiste est parti récupérer son chien qui s'était échappé"
    data "< Eh bah, c'est bien ma veine ! > se dit-il en remerciant le voisin"
    data "< Tiens, le voilà !!! >"
    data "< Oui, j'arrive ! Ah ce chien..., et ce zèbre est malin comme un singe, en plus... >"
    data "< l'histoire de me retourner , et paf, disparu ! >"
    data "< Au fait, je n'ai plus de super > dit le pompiste qui traverse la rue d'un pas rapide"
    data "< C'est pas grave, il me faut de l'ordinaire ."
    data "< Faites-vous aussi garage ? J'ai du jeu dans la direction, là c'est un truc de fous >"
    data "< moi je peux vous conseiller mon frère à deux pas d'ici, qu'est-ce que vous en pensez ? >"
    nbm=155:dim mots$(nbm)
 
nbp=11
restore [mots]
for a=0 to nbp
    read a$
    fin=0:mt=1
    while fin=0
        m$=word$(a$,mt)
        if m$="" then
            fin=1
            mt=1
        else
            mots$(ma)=m$
            mt=mt+1
            ma=ma+1
        end if
    wend
next
 
 
[dialogue]    'préparation du dialogue
    data 163,095,124,057,187,128,032,020
    data 155,026,041,078,104,034,100,101
    data 007,103,170,150,201,201,254,324
    data 158,060,083,026,121,172,201,065
    data 163,009,010,005,175,212,650,128
    data 157,083,026,121,180,127,210,088
    data 161,040,026,121,121,121,039,042
    data 084,098,034,045,165,078,066,232
    data 156,063,041,070,057,170,062,154
    data 162,063,062,063,062,063,062,172
    data 160,015,147,027,137,133,128,082
    data 136,152,165,120,024,033,121,213
    nbmp=96
    navg=11:dim mce$(navg)
 
restore [dialogue]
nump=1
ph=0
for a=0 to nbmp-1
    read b
    if b>154 and b<164 then ph=1
    if b>163 and b<189 then ph=0:nump=nump+1
    if ph=1 and b<155 then
        mce$(nump)=mce$(nump)+mots$(b)+" "
        mot=mot+1
    end if
next
 
'préparation de l'interface graphique
WindowWidth = 480
WindowHeight = 230
 
UpperLeftX=int((DisplayWidth-WindowWidth)/2)
UpperLeftY=int((DisplayHeight-WindowHeight)/2)
 
etape=1
 
texteditor #main.dial, 20, 15, 440, 100
button #main.cause, "Cliquer pour commencer", [SP1], UL, 20, 130, 440, 35
menu #main, "Edit"
 
'ouverture de l'interface graphique
open "Super Jeu" for window as #main
    #main, "trapclose [fin]"
    #main, "font ms_sans_serif 10"
    #main.dial, mce$(1)
    wait
 
'**** sous-programmes *****

[SP1]
    'affiche une phrase dans le texteditor
    'et fournit la réaction du joueur dans le bouton

    #main.cause, ""
 
    select case etape
        case 1 : te=2 : bt=3
        case 2 : te=4 : bt=5
        case 3 : te=6 : bt=7
        case 4 : te=8 : bt=9
    end select
 
    #main.dial, mce$(te):gosub [SP2]
    #main.cause, mce$(bt)
 
    if etape>3 then gosub [fin] else etape=etape+1
    wait
 
[SP2]
    'monopolise l'exécution pendant une demi-seconde
    fintempo=time$("ms")+500
    while time$("ms")<fintempo:wend
    return
 
[fin]
    'jeu fini, on s'en va
    confirm "Votre avis ?" + chr$(13) + "Quitter ce jeu à la xxx !";jfaisquoi$
    if jfaisquoi$<>"yes" then notice "eh bien je quitte quand même !"
    close #main
    end
 




Edité par Christophe Le 11/10/2020 à 19h14
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 12/10/2020 à 15h39

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2440
Que dire...?
:( :? :| :drool :hum
Des tableaux de temps, lieux, sujets, actions...ect
Une sélection aléatoire ou contrainte
Ferait un interlocuteur fantasque
____________________
Roro

   
Le 16/10/2020 à 21h12

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 741
;)
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Jeux » Un jeu à la c.. ou l'arroseur arrosé  

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie