2015-03-01
- correction cosmétique
   du modèle du Blog
  ° diaporama occupant
     tout l'écran
  ° message défilant
     démarrant du bord
     droit sous Chrome

Trognon le chaton

En lumière..

Des articles Lesbiens: Camellia Rose ,
Lipsticks [:* Fanny] , Lisa
et des Histoires signées MyLzz59: Mylène écrit (http://mylene-ecrit.blogspot.fr)

Des articles Trans-*: Ma Vie En Rose ,
Wawa's Smile , FtM ? , Thomas Beatie 2

Des Coups de Coeur: EXL ,
Kashimashi ~Girl meets Girl~ ,
Sa Majesté Freddie , Mon Côté Midinette
des Coups de Gueule: Karol relève-toi ,
BlondeBox , 1 pub 2 mR2 [bon courage :D]
et des Coups de Blues: Pile 1 an ,
Baisser de Rideau , Interlude

Du Visual Basic (VB6-VBA): Mlle Hanoï
Boules , Bombes , AnaClock , DigiClock ,
Tris (tetris) ,
et de la Bricologie: Real Barbie Girl

Pis pour les plus grand(e)s, des
S*X TOYS:
DildoBike , Tech To Nique

Et même parfois de la vraie vie:
Impressions de Voyage (Maroc) ,
Chez Mickey , La Tonnelle ,
Nous Nous Sommes Rencontrées

.

La vraie Taunie ..


... Tu me manques :'(


Notre Taz :*




Clock & Zik..

Idée Cadeau..


Attrape-Mouches

dyke goudou gouine homo homoaffectivité homoaffectivity homosexual homosexualité homosexuality homosexuel homosexuelle inverti invertie lesbian lesbianism lesbianisme lesbien lesbienne lez néovagin neovagina réassignation saphique saphisme sapphic sapphism trans transgender transgenre transidentité transidentity transsexalité transsexality transsexual transsexualism transsexualisme transsexuel transsexuelle tribade tribadisme vaginoplastie ...

Le combat continue..

MyLzz59..

.. @gmail.com

Blog français

Ca va encore mieux en le disant.. Important
## Comment "marche" ce Blog / Comment laisser un Commentaire ##

Et pour finir,
Mylène écrit (http://mylene-ecrit.blogspot.fr)N'oubliez pas de visiter aussi
mon blog d'histoires ====>



-MyLzz59-

vendredi 2 janvier 1970

Mlle Hanoi (full)

Retour à l'article source et aux commentaires

A] Intro
Depuis quelques jours me trottait dans la tête l'idée saugrenue que ça faisait longtemps que je n'avais publié de code VisualBasic :P Aussi, comme une "tâche de fond" je cogitais sur la recherche d'un sujet de programme.. jusqu'à hier soir (vi vi, le jour de Noël :D) !

J'étais en train de pratiquer un tri sévère dans la quantité de jolies photos de fifilles récupérées sur le Net par un Aspirateur Fou lancé à l'aventure (nan Marg', pas Mimine, tss..), photos dont je vous parlerai prochainement, quand a surgi l'idée, ou plutôt l'association d'idées. Alors j'ai dégainé l'éditeur VB ainsi que mon antique logiciel de retouche d'images.

Le programme que je vous propose ici, car il ne s'agit pas juste d'un bout de code, reprend un jeu bien ancien, les célèbres Tours de Hanoï, dans une version pas franchement académique :D. Ici la Tour est remplacée par une fifille (on ne peut plus) dénudée, sur fond de nature. La demoiselle est divisée dans sa hauteur en six tronçons qu'il faut déplacer individuellement jusqu'à la reconstituer sur l'un des trois emplacements d'empilement. Les tronçons vont de 1 = la tête à 6 = les pieds. Sur chaque empilement vous ne pouvez déplacer que le tronçon du dessus, et vous ne pouvez poser un tronçon par-dessus un autre que s'ils respectent l'ordre vertical d'origine, par exemple poser le 2 (les seins) sur le 4 (les fesses) est permis mais pas l'inverse !

Le maniement du jeu est simple, vous utilisez les quatre touches flèches du clavier. Horizontalement, vous déplacez le Curseur (la tête de fifille en haut) sur l'un des trois emplacements. Appuyer sur la flèche vers le haut pour lever le tronçon à déplacer. Amener le Curseur sur l'emplacement où poser le tronçon, et appuyer sur la flèche vers le bas pour poser. Le tronçon ne se posera pas si l'ordre vertical n'est pas respecté. Lorsque la demoiselle est reconstituée sur l'un des trois emplacements, le jeu le signale, mais vous pouvez continuer à jouer !

Voici par exemple l'un des deux départs possibles :
Prendre la tête (1) à gauche, et la poser au milieu.
Prendre les seins (2) à gauche, et les poser à droite.
Reprendre la tête (1) du milieu, et la poser sur les seins (2) à droite.
Prendre les reins (3) à gauche, et les poser au milieu, dans l'emplacement libéré..
Ce jeu se joue idéalement en 63 déplacements, ce départ amène la fifille à droite ;)

B] Rapatrier les Images du Jeu
Hélas, ce blog ne permet pas de publier "facilement" les objets du programme, aussi je vais devoir vous mettre à contribution :P Vous allez commencer par enregistrer à l'identique sur votre disque dur l'une des deux séries d'images. Chaque série se compose d'un Fond.jpg, d'un Curseur.gif, et de 6 tronçons Fille1.gif à Fille6.gif Le format .gif permet de créer des zones transparentes sur les images, alors que le .jpg est adapté aux images de fond. Notez les dimensions suivantes, vous en aurez besoin ci-après..

Fond:
Feuille UF1 : Width=604.5 , Height=474 (points)
Image Fond.jpg : Width=800 , Height=600 (pixels)

Série (A_):
Objets Im1 à Im6 : Width=82 , Height=60 (points)
Images Fille*.gif : Width=110 , Height=80 (pixels)
Objet ImCur : Width=59 , Height=48 (points)
Image Curseur.gif : Width=79 , Height=64 (pixels)

Série (B_):
Objets Im1 à Im6 : Width=162 , Height=60 (points)
Images Fille*.gif : Width=216 , Height=80 (pixels)
Objet ImCur : Width=69 , Height=48 (points)
Image Curseur.gif : Width=93 , Height=64 (pixels)

En effet, selon que vous utilisez VBA (VisualBasic pour Applications, dans Word ou Excel), ou le "vrai" éditeur VisualBasic version 6.* (voire 5, ça devrait marcher) si vous avez la chance de l'avoir, vous aurez à jongler avec ces *$# de points (VBA) ou le droit d'utiliser directement les pixels (VB6)..

=== Série A === === Série B ===
A_Curseur.gif B_Curseur.gif
A_Fond.jpg B_Fond.jpg
A_Fille1.gif B_Fille1.gif
A_Fille2.gif B_Fille2.gif
A_Fille3.gif B_Fille3.gif
A_Fille4.gif B_Fille4.gif
A_Fille5.gif B_Fille5.gif
A_Fille6.gif B_Fille6.gif

C] Implanter les Eléments du Jeu (ex: VBA)
Je vous propose la démarche en VBA, la cas le plus probable.. Lancer l'application hôte (j'ai utilisé Excel), et sauver le document vierge par défaut, dans le format AVEC macros. Puis, démarrer l'éditeur VBA (Alt-F11). Vérifier que sont affichées les fenêtres "Explorateur de Projet" et "Propriétés", ou les afficher depuis le menu Affichage.

Par un clic droit dans l'explorateur de projet, insérer une feuille "userform". Puis dans les propriétés, changer celles-ci:
(name) : UF1
Caption : Mlle Hanoï (P)12/2008 MyLzz59
KeepScrollBarsVisible : 0 - fmScrollBarsNone
Height : 474 (points)
Width : 604,5 (points)
StartUpPosition : 2 - CenterScreen
Picture : aller chercher l'image Fond.jpg

..pensez aussi à sauvegarder maintenant, en cliquant sur la disquette :P

Nous allons maintenant créer deux objets "Image" dans la feuille UF1. Cliquer dans la feuille. Une "Boîte à Outils" devrait apparaître. Dans celle-ci, cliquer sur l'icône "Image" (la montagne avec le soleil), et dessiner un rectangle dans la feuille UF1. Cliquer sur ce rectangle, et modifier les Propriétés de cette image comme suit. Si vous avez double-cliqué par erreur et que VBA vous affiche la fenêtre de code au lieu de la feuille UF1, cliquez sur l'icône "afficher l'objet" de l'explorateur de projet, et reprendre..
(name) : ImCur (au lieu de Image1)
BackStyle : 0 - fmBackStyleTransparent
BorderStyle : 0 - fmBorderStyleNone
SpecialEffect : 0 - fmSpecialEffectFlat
Height : 48 (points)
Width : 59 (série A_) ou 69 (série B_)
Picture : aller chercher l'image Curseur.gif
de la série choisie

..et sauvegardez :P

Cliquez dans l'image ImCur créée, et par copier-coller générez son clône. Modifiez les propriétés de ce clône comme suit:
(name) : Im1 ( i m chiffre un)
Height : 60 (points)
Width : 82 (série A_) ou 162 (série B_)
Picture : aller chercher l'image Fille1.gif de la série choisie

..et sauvegardez :P

Nous allons maintenant clôner cinq fois l'image Im1 pour créer les autres tronçons constituant la demoiselle.. Cliquer sur Im1, et générer un premier clône par copier-coller. Le renommer (name) Im2, et aller chercher (Picture) l'image Fille2.gif de la même série. Ne rien changer d'autre. Continuer ainsi pour les images Im3 à Im6. En les saisissant par l'intérieur, vous pouvez réorganiser sommairement le contenu de UF1. Ne modifiez pas les dimensions des images avec la souris !

Sauvegardez encore une fois le résultat, nous allons "greffer" le code du programme :)

D] Le Code du Programme
Dans l'explorateur de Projet, cliquer sur l'icône "Afficher le code", ou alors double-cliquer sur le fond de UF1. La fenêtre de code s'affiche à la place de la feuille UF1. Sélectionner et effacer les éventuelles lignes de code que VB aurait pu générer automatiquement. Puis, copier les lignes ci-dessous (à la fin de cet article) et les coller à l'identique dans la fenêtre de code. Aucune ligne ne doit s'afficher en rouge. Sauvegarder encore.

Il ne reste plus qu'à "habiller" le code d'une ligne de lancement. Par exemple, sous Excel..
Cliquer sur ThisWorkBook dans l'explorateur de Projet, puis sur l'icône Afficher le code. Effacer l'éventuel code existant, et coller ceci (pensez à sauvegarder :P):
Private Sub Workbook_Open()
UF1.Show 1
End Sub

E] Exécution (enfin :D) de ce programme
Vérifier que le niveau de sécurité de l'hôte (Excel, Word..) permettre l'exécution des macros, par exemple "sécurité moyenne". Fermer puis ouvrir le fichier créé (.xls ou .doc). Si une fenêtre demande confirmation, choisir "Activer les Macros". Le jeu devrait démarrer par un popup de bienvenue.. Si les flèches ne répondaient pas, cliquer dans le feuille UF1 pour l'activer.

Enjoy,
-MyLzz59-

'## Code du Programme ##
' =============================
' Mlle Hanoï (P)12/2008 MyLzz59
' =============================

' -----------------
' Zone Déclarations
' -----------------
Const HT As Integer = 24 ' Hauteur Titre
Dim X%, Y%, Z$(1 To 3), OldCode As Integer

' -------------
' Départ du Jeu
' -------------
Private Sub UserForm_Initialize()
For T% = 1 To 6: Positionne T%, 1, T%: Next T%
Z$(1) = "654321": Z$(2) = "": Z$(3) = "": X% = 2: Curseur X%: Y% = 0: OldCode = 0
MsgBox "Bienvenue," + vbCrLf + "Utilisez le Pavé Fléché", vbInformation, UF1.Caption
End Sub

' ------------------------------------------------------
' SUB: Positionne N° (1à6), Colonne (1à3), Hauteur (0à6)
' ------------------------------------------------------
Sub Positionne(No As Integer, Col As Integer, Hau As Integer)
If No < 1 Or No > 6 Or Col < 1 Or Col > 3 Or Hau < 0 Or Hau > 6 Then Beep: Exit Sub
With UF1.Controls("Im" + Chr$(48 + No))
.Left = UF1.Width / 6 * (2 * Col - 1) - Im1.Width / 2
.Top = IIf(Hau, UF1.Height + (Hau - 7) * Im1.Height - HT, ImCur.Height)
End With
End Sub

' --------------------------
' SUB: Curseur Colonne (1à3)
' --------------------------
Sub Curseur(Col As Integer)
If Col < 1 Or Col > 3 Then Beep: Exit Sub
ImCur.Top = 0: ImCur.Left = UF1.Width / 6 * (2 * Col - 1) - ImCur.Width / 2
End Sub

' ---------------------------
' EVT: Gestion du Pavé Fléché
' ---------------------------
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode < 37 Or KeyCode > 40 Or KeyCode = OldCode Then Exit Sub
OldCode = KeyCode
Select Case KeyCode
Case 37, 39 ' Left:37, Right:39
X% = X% + (KeyCode = 37 And X% > 1) - (KeyCode = 39 And X% < 3): Curseur X%
If Y% Then Positionne Y%, X%, 0
Case 38 ' Up
If Y% = 0 And Z$(X%) <> "" Then
Y% = Val(Right$(Z$(X%), 1)): Z$(X%) = Left$(Z$(X%), Len(Z$(X%)) - 1)
Positionne Y%, X%, 0
End If
Case 40 ' Dn
If Y% > 0 And Y% < Val(Right$("7" + Z$(X%), 1)) Then
Positionne Y%, X%, 6 - Len(Z$(X%)): Z$(X%) = Z$(X%) + Chr$(48 + Y%): Y% = 0
' Tester si Gagné
If InStr(Z$(1) + "*" + Z$(2) + "*" + Z$(3), "654321") Then _
MsgBox "Gagné, la Demoiselle est reconstituée", vbInformation, UF1.Caption
End If
End Select
End Sub
Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = OldCode Then OldCode = 0 ' Un seul déplacement par appui !
End Sub

' --------------
' EVT: Quitter ?
' --------------
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If MsgBox("Vous voulez quitter ce Jeu ?", vbQuestion + vbDefaultButton2 + vbYesNo, _
UF1.Caption) = vbYes Then End Else Cancel = True
End Sub

'## FIN DU CODE ##

Retour à l'article source et aux commentaires