× Aktuálně z oboru

SHIELD Experience Upgrade 7 – méně hledání a více zábavy [ clanek/2018052902-shield-experience-upgrade-7-mene-hledani-a-vice-zabavy/ ]
Celá zprávička [ clanek/2018052902-shield-experience-upgrade-7-mene-hledani-a-vice-zabavy/ ]

VB – 40. lekce

[ http://programujte.com/profil/27-jiri-chytil/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/75-martin-zak/ ]Google [ :?rel=author ]       21. 2. 2006       16 063×

40.1 Úvod do čtvrté desítky
40.2 Vlastní typ binárního souboru
40.3 Flexgrid - pokračování
40.4 Volání procedur událostí v kódu
40.5 Dodatek o objektu Label
40.6 Domácí úkol
40.7 V další lekci

40.1 Úvod do čtvrté desítky

Toto je jubilejní 40. lekce. Takhle jsem to sice nechtěl, ale vyšlo to tak. Mělo tu být něco velmi zajímavého, ale bohužel tomu tak nebude. Musím totiž splnit nějaké sliby a povinnosti. Ze slibů je to ukázka vlastního binárního souboru, která se mi nějakým způsobem vytratila, a z povinností je to dokončení Flexgridu, který ovšem osobně moc rád nemám.


40.2 Vlastní typ binárního souboru

Následující kód - tedy předvedení binárního souboru - pochází z návrhu na jednu hru. Na styl Diabla, ale s grafikou podobnou spíše hře Pokémon pro Gameboy color. Bohužel jsem se do tohoto projektu nějak zamotal a nemám čas v něm pokračovat, snad jindy :) Kód využívá především datových typů. Ty ho dělají přehlednější. Kód je značně ořezán, protože byste museli sakra dlouho skrolovat a asi byste se nedozvěděli nic navíc. Ale pokud chcete dělat savy a podobné věci, doporučuji používat uživatelsky definované typy, je to fakt lepší.
Kód:

Do modulu:


Public Type Waepon 'popisuje vlastnosti zbraní
    Jmeno As String * 16
    Damage As Byte
    Durability As Byte
    Cost As Long
    NeedStrange As Byte
    Special As Byte
    Magic As Byte
    MagicHP As Byte
    Description As String * 255
End Type

Public Type Armor 'popisuje vlastnosi brnění
    Jmeno As String * 16
    Durbilty As Byte
    Cost As Long
    NeedStrange As Byte
    Special As Byte
    Magic As Byte
    Description As String * 255
End Type

Public Type Charakter 'popisuje vlastnosti postav, ale nejsou tam všechny
    Jemno As String * 16
    Exp As Long
    Level As Byte
    Money As Long
    Aura As Byte
    Streng As Byte
    Dexterity As Byte
    Magistry As Byte
    Life As Integer
    maxLife As Integer
    Mana As Integer
    maxMana As Integer
    Year As Byte
End Type

Public Type Magic 'zde jsou uvadeny pouze základní skupiny, běžně mají ještě podtypy
    Fire As Byte
    Ice As Byte
    Elct As Byte
    White As Byte
    Black As Byte
    Phys As Byte
    Curse As Byte
End Type

Na formulář přidat 4 tlačítka, toto je kód do modulu formuláře:


Private cokoliv As Long 'toto je tu jen abyste viděli, jak se prcuje s jednotlivými proměnnými
Private Char1 As Charakter
Private armor1 As Armor
Private Waepon1 As Waepon
Private Mag As Magic


Sub SaveToBinnary()
    Open "c:/charakter.cha" For Binary As #1
        Put #1, 1, Char1
        Put #1, , cokoliv
        Put #1, , Waepon1
    Close #1
End Sub

Sub LoadFromBinnary()
    Open "c:/charakter.cha" For Binary As #1
        Get #1, 1, Char1
        Get #1, , cokoliv
        Get #1, , Waepon1
    Close #1
End Sub

Private Sub Command1_Click()
    With Char1
        .Jemno = "DruSeev"
        .Exp = 12845
        .Level = 12
        .Money = 350
        .Aura = 20
        .Streng = 11
        .Dexterity = 11
        .Magistry = 14
        .Life = 105
        .maxLife = 106
        .Mana = 20
        .maxMana = 163
        .Year = 2
    End With
    With Waepon1
        .Jmeno = "Sword of darkness"
        .Damage = 5
        .Durability = 21
        .Description = "meč se vyznačuje temnou silou, jež oslepuje protivníka, za to se platí nízkým zraněním "
    End With
    With Mag
        .Fire = 0
        .Ice = 3
        .Elct = 1
        .White = 0
        .Black = 6
        .Phys = 2
        .Curse = 12
    End With
    cokoliv = 7
End Sub

Private Sub Command2_Click()
    SaveToBinnary
End Sub

Private Sub Command3_Click()
    LoadFromBinnary
End Sub

Private Sub Command4_Click()
    With Char1
        Print .Jemno
        Print .Level
        Print .Exp
    End With
    
    With Waepon1
        Print .Damage
        Print .Jmeno
        Print .Description
    End With
    Print cokoliv
End Sub

Prvním tlačítkem uložíte hodnoty do proměnných. Druhým vytvoříte soubor a uložíte hodnoty do něj. Pak můžete formulář zavřít. Potom hodnoty pomocí třetího tlačítka načtete do proměnných a pomocí čtvrtého tlačítka je vytisknete na formulář. Nevytahoval jsem vše, protože - jak jsem psal nahoře - by byl kód příliš roztáhlý. Proto vypisuji pouze několik hodnot, však to vyzkoušejte sami. A teď už ke druhé části, tou je propojení FlexGridu s databází.


40.3 Flexgrid pokračování

Upřímně řečeno nevím, co mě to napadlo roztahovat Flex Grid do dvou lekcí, těch pár řádků, co tu napíšu, za to ani nestojí. Protože pokud chcete data z databáze dát do flexgridu, tak opravdu nemáte moc práce, stačí si vhodně nastavit flexgrid a potom už jen u flexgridu nastavit správě vlastnost DataSource na Data1 nebo na název všeho objektu Data. Vzhledem k tomu, že jsem to moc neodhadl, tak ještě něco málo přidám.


40.4 Volání procedur událostí v kódu

Pokud chceme zavolat nějakou proceduru události v kódu, tak ji voláme jejím jménem, takto:


Private Sub Command1_Click()
    Print "x", 135
    Print "y", 523
End Sub

Private Sub Command2_Click()
    Command1_Click
End Sub

Pokud má funkce parametry voláme ji takto:

Private Sub Command1_Click()
    Command2_MouseDown 1, 0, 150, 150
End Sub

Private Sub Command2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Print Button
    Print Shift
    Print X
    Print Y
End Sub

To by bylo tak vše k danému tématu.


40.5 Dodatek o objektu Label

Objet label má ještě dvě vlastnosti, o kterých jsem se nezmínil, tak to chci napravit. Takže zaprvé je to vlastnost Autosize. Pokud ji nastavíte na true, tak se label bude při vkládání roztahovat do délky. Pokud ovšem nastavíte na true i vlastnost wordwarp, tak se bude roztahovat i na výšku a to tak, že bude řádky zalamovat v mezerách. Nemusíte tedy mít strach, že by vám rozpůlil slovo.


40.6 Domácí úkol

Vytvořte vlastní binární soubor jakéhokoliv programu


40.7 V další lekci.

V další lekci zase nějaké drobnosti na doplnění.


Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2006021803-vb-40-lekce/ ].