Workshop Game plan
We gaan een game maken, waarbij wij (de programmeurs) de meeste lol zullen hebben en daarbij zelf ook de meeste waardering van ons werk aan onszelf zullen geven. We gaan zoveel mogelijk handigheden programmeren. De game die ik samen met u wil maken kan en moet misschien nog verder ontwikkeld worden. Draag daarom gerust ideeën aan. We zijn in september gestart met het introductiescherm (Workshop sessie 1) waarin we gewag deden van de door ons te demonstreren programmeurs mogelijkheden en onze skills daarin. Ons introscherm zal als het goed is wat muziek en geluid op de achtergrond hebben en effecten van inzoomen en vervagingen van vensters bezitten. En uiteraard ook animatie. In de komende sessies gaan we eerst een "strategische" game voor oudgedienden op beginners niveau maken. U bent ontwerper en maker van deze game en u bent ook het eerste grote publiek.</>
Naast het introductie scherm (dat is het startvenster waarmee u reeds kennis hebt gemaakt) bevat de game zes actie schermen.

  • CONTROL ROOM
  • WARP-CENTER
  • PLANNING-ALLOCATION
  • SHORT-RANGE Database
  • DOCKING area
  • DEFENCE ROOM


Het start-hoofdscherm is de COMMAND BRIDGE (CONTROLE KAMER).
Vanuit dit scherm kunt u naar 5 verschillende spellocaties (Actieschermen). Telkens als u een actie-scherm verlaat keert u automatisch terug in deze CONTROLE-KAMER. De computer kan u helpen bij het navigeren naar het WARP-CENTER en de PLANNING en ALLOCATION. (schakelpanelen 2 en 4) VoorJanHCC1
De groene banen (zijn de energielijnen die lopen de vanaf 5 schakelpanelen naar 3 super computers) die de hoeveelheid energie aangeven, die elke computerunit momenteel gebruikt. Het is op dit punt in de game mogelijk om over te stappen op handmatige bediening door het (Auto-Pilot OFF) schakelen van de schakelpanelen (computers) waardoor minder kostbare energie nodig is, maar waardoor de speler minder adviezen en hulp geeft.

Natuurlijk kan de speler ook kiezen voor een mix (gedeeltelijke Auto-Pilot) tot volledige Auto-Pilot. Zonder energie is het spel verloren. De computer zal adviseren om elke 4de beurt energie op te halen vanaf cargo ruimteschepen nabij sterrenstelsels waar veel vriendschappelijke planeten liggen. Natuurlijk wordt je door de vijand geschaduwd. Als je "SCHIELDS" niet meer voldoende bescherming bieden, wordt je aangevallen. Als je zelf aanvalt moet je je "SCHIELDS" volledige power aan zetten.

Het is niet eenvoudig (tijdrovend) om SPRITES (animatie), vervaging en teksten op plaatjes te programmeren. Wat zeg ik? Natuurlijk is het eenvoudig als je LibertyBASIC gebruikt en veel kennis hebt van Windows. Maar ik kies voor een groot (en wat ouder) publiek. Het gaat om het plezier van een eigen programma te schrijven en dankbaar publiek om je kunnen te demonstreren. Programmeren is tijdrovend maar vooral verslavend. Ik zal hier proberen hulp (tijd) van je te vragen en daarvoor in de plaats wat kennis en achtergrond van een computertaal te geven. Van LibertyBASIC v4.5.1 en zo u wilt JustBASIC v2.0.
In deze game kun je hier op een willekeurige plek klikken van het CONTROL ROOM hoofdscherm klikken, waarna er een popup-menu verschijnt voor het instellen van de Auto-Pilot. Trouwens de schakelaars staan boven in het venster. De gebruikers van JustBASIC kunnen in plaats van een popup-menu, een CONFIRM-scherm of een NOTICE-scherm dat zeg ik omdat ik niet weet of popup-menu's bij JustBASIC v2.0 geïmplementeerd zijn). Ook kan JustBASIC de lichtuitstraling uit het hoofdscherm niet wijzigen (doen vervagen), omdat daarvoor een tekening-laag van het scherm zal moet vervagen en dat gaat zelfs in Liberty BASIC alleen met een Windows API. JustBASIC kan zoals ik eerder vertelde die API (functie uit een DLL bestand) niet aanroepen. De berichten (mededelingen van de computer) komen telkens 3 seconden op het grote zwarte scherm te staan.

Het volgende hoofdscherm geeft een indruk van het WARP CENTER hoofdscherm.
Het heelal is groot. Je kunt er WARP(pen). Vanuit het hoofdscherm (COMMAND Bridge) kun je naar de overige hoofdschermen WARP center, Planning-Allocatie en het Defensie scherm gaan. Vanaf WARP kun je naar Short-Range en vanaf het Planning-Room scherm ga je naar het Docking center. VoorJanHCC2
WARP naar een mogelijk gunstige plek. De groene cijfers linksonder geven segment nummers aan in een onbekend heelal. Zet daarna je Short Range sensoren in. Blijf uit de buurt van zwarte gaten. WARP(pen) kost extra energie maar de computer laat in een lijst zien welke sterrenstelsels kansrijk zijn. De lijst bestaat uit duizenden sterrenstelsel-namen. Dit is echt een uitdaging om te programmeren. Want we gaan een database leren te manipuleren.

Zo ziet het SHORT-RANGE actie scherm er bijvoorbeeld uit.
Vier sterrenstelsels uit segment (202,266,423) en drie zwarte gaten, zijn geselecteerd. Dit scherm is belangrijk in de game, omdat hier enkele RND() getallen beinvloed worden. Random (willekeurige) getallen zullen in de game overal wat beinvloed worden. Dit SHORT-RANGE scherm is gekoppeld aan de WARP supercomputer. Volg de energielijnen uit de COMMAND BRIDGE maar. VoorJanHCC3
Linksboven in de SHORT RANGE AREA, zie je een uitvergroting van de drie groene een witte sterrenstelsels en drie zwarte gaten. Voordat je in een gekozen stelsel segment energie, ammunitie en dergelijke wilt ophalen en of andere spullen wilt afleveren, moet je naar de PLANNING en ALLOCATIE room om de koppeling met de ruimtevracht schepen voor te bereiden.

Hieronder zie je een voorbeeld van het PLANNING en ALLOCATION actie scherm.
Het middelpunt van de kleuren vijfster kan met de muis ver plaatst worden. De oppervlakten van de kleuren vlakken geven de opslagruimte verhouding van de te transporteren (afstaan) hoeveelheden aan. VoorJanHCC4
Ik merk dat de woordjes FOOD en REPAIR van plaats verwisseld zijn. De eenheid van energie is uitgedrukt in Terra SCRUMPX. De teksten Food, Repair, Arms, Shield, en Fuel moeten nog gunstiger komen te staan (tegen de buitenkant lijnen van de vijf-sterhoek). De teksten kan je onder een hoek schrijven, maar de individuele letters moeten ook onder die hoek staan. Dat laatste moet met een API van Windows. We zullen dus teksten op het scherm manipuleren. Teksten scheef schrijven, onderste boven enz. schrijven. In vele gevallen zal blijken dat de knappe Microsoft programmeurs het veel eenvoudiger hebben kunnen maken. Met wat Goniometrisch kennis zullen we vele API uit Windows na kunnen apen. We zullen bij het programmeren van deze module veel gebruik maken van de FLOODFILL functie van Windows. Natuurlijk kan JustBASIC dat niet. Maar we gaan dat anders oplossen. Trouwens LibertyBASIC heeft ook geen "native" (ingebouwde) FLOODFILL functie.

Een moment opname uit DOCKING AREA
Hier zie je er een voorbeeld van hoe we eerst aan moeten meren [lock on], voordat we na [fine tunning] echte kunnen transporteren (materiaal overzetten van of naar een transport ruimtevaart schip).Let op!! DOCKING Area kun je alleen bereiken door eerst naar PLANNING te gaan. VoorJanHCC5
Hierboven staat het Docking scherm. We gaan proberen het kruis op het groene sterrenstelsel precies op ons vizier kruis te laten vallen. De groene cirkel loopt met een vaste snelheid in een vaste richting. Schat in waar je de cirkel het beste kunt ontmoeten. Meestal moet jij de andere kant uit om hem te treffen. Boven in het scherm staat een soort 360 graden boog. Jouw ruimteschip gaat even hard als de cirkel(s) waarin de transport shuttle ruimtevaartuigen liggen.

Gewoon achter de DEFENCE computer gaan zitten? Zo ziet die eruit. Wat cargo ruimtevaartuigen. Niets in het vizier (midden scherm). PHOTON GUN midden onder aan het scherm. Jouw ruimtevaartuig staat ongeveer 15° ZENITH en 145° AZIMUTH
VoorJanHCC6
Dit scherm heeft een mix aan sprites en grafische tekeningen. Alleen de pijltjes toetsen gebruiken voor de besturing.

Met uitzondering van het laatste scherm, zijn de listings van de getoonde schermen elk nog geen hele A-4tje lang. Het spel is nog niet af. We schrijven het spel samen. Ik lever alle plaatjes (desgevraagd), maar met uitzondering van het hoofdscherm zijn alle schermen in BASIC geprogrammeerd. Op de Workshop behandel ik deze game aan de hand van de LibertyBASIC Debugger. Daarbij gebruik ik de "lesson" (LSN - functie) van LibertyBASIC om listings toe te lichten. Mijn eigen beginners "handboek" is inclusief 12 bijbehorende lessen.

Recent gepasseerde galaxy's [Docking status] Details Details
GALEX-Worm UGC 09128 [Locked on 2 times] FUEL cargo shuttle [34%] No extra details
UGCA 438 (ESO 407-018) [--] ENERGIE cargo shuttle [94%] No extra details
Kronos-SwirL UCW Tscale [--] FUEL cargo shuttle [23%] No extra details
ICIGARigar 3104 IB(s)m [--] Empty cargo shuttle [98%] No extra details
  [--] No extra details No extra details
  [--] No extra details No extra details



Voor het bouwen van de game starten we direct met Windows vensters. De lessen uit het handboek starten fundamenteler, dus al snel met Variabelen e.d. Om wat te oefenen maken we extra opgaven zoals een Morsetekens programma. Omdat morse tekens uit punten en strepen bestaan en karakter tekens in de computer omgezet en opgeslagen worden in nullen en enen, geeft dat de mogelijkheid om een morse teken programma te maken dat de digitale vorm van computer tekens omzet in puntjes en strepen. Daarmee krijgen we een idee van hoe hele getallen opgeslagen worden. Verder zullen we een kassa programma maken dat wisselgeld in de juiste biljetten en munten aangeeft, daarmee bekijken de opslag van variabelen weer en vooral de MOD-functie. MOD is een getal dat de rest na een deling geeft. Functies behandelen we vooral aan de hand van een extra programma om Romeinse cijfers en getallen om te zetten. Voor tegenstaanders van "schiet spelletjes" zullen (kunnen) we ook een Bingo programma schrijven.

Spelstrategie: Probeer in maximaal 20 beurten, 30 vijandige ruimteschepen te verslaan. Je wordt geholpen en hoeft alleen maar een strategische logistiek te volgen. Lever op strategische plekken Energie, Wapens en Grondstoffen (voedsel) af of haal Energie enz. op. Let op dat je zelf nooit zonder (of te weinig) Energie of Voedsel hebt. Je kunt ook zelf aanvallen, maar dat vergt behendigheid en veel geluk. De vijand vecht niet graag, maar vlucht en geeft een natrap. Het opsporen van de vijand kost ook veel energie en geluk. Zwarte gaten en negatieve energie stormen bepalen gedeeltelijk ook je lot. Je kunt je supercomputers inschakelen, hetgeen extra Energie vergt. Maar de computers houden wel de conditie van jouw ruimteschip in de gaten en geven veel informatie over de vijanden en vrienden.

Mocht je de uitdaging niet aangaan, dan kun je ook een eenvoudig Bingo programma helpen schrijven.


VoorJanHCC7
Inhoud van de Workshop sessies:

  1. Installatie en voorkeuren. Inleiding en documentatie .Starten en debuggen.
    • Vensters, knoppen, plaatjes, listboxen, menu's enz.
    • en het introscherm (Call sub, RND(0)).
  2. Events, toetsenbord, variabelen, bits en bytes, lussen, beslisstructuren.
    • En de stuurcabine deel 1 (Bridge of Controle Room).
  3. Demo sprites, geluid, Windows API voorbeeld voor stuurcabine deel 2
    • Warp-Center (XOR lijnen en boxen)
  4. Herhaling en details van sessie 1-2-3 (uitreiking documentatie enz.)
  5. Sub en RND en goniometrie met global, ByValue en ByRef
    • Short Range plaatjes genereren.
    • De speldelen aan elkaar knopen.
  6. Allocatie scherm met Windows opvul routines
    • Herhaling sessie 2 en 3
    • Database bestand met namen van sterrenstelsels.
  7. Het Docking scherm
    • Speldelen koppelen.
  8. Game details uitwerken en installeren van LBGfx (LB graphics extra is een eigen DLL van een LB gebruiker)
    Deze DLL gebruikt dezelfde Windows DLL's als LB, maar is krachtiger dan de SPRITE routines van LB.
  9. Game afronden.
    • Testen en herhalen van sessie 5-6-7
  10. Vakantie


Ik maak bijna elk jaar een Nieuwjaars wenskaart voor familie en vrienden. Ik hoop dat, dit jaar niet te hoeven te doen, omdat ik hoop geen tijd ervoor te hebben. Sessie 4 is in januari 2020. Sessie 9 is juni 2020. Tot ziens op een Workshop met laptop en USB stick en veel geduld en enthousiasme. De meeste sessie zijn al tot in details uitgewerkt. In 2020 komt LibertyBASIC versie 5 waarschijnlijk uit.

 

Samenvatting (voorbeeld listings) oefening van de eerste workshop.

 

workshop 1 afb 1

 

Opdracht: Maakt een soortgelijke intro-plaatje met Engels gesproken tekst en animatie.

 

Uitwerking:

Open een grafisch venster 800X600 zonder scrollbar en zonder frames.

Vul het venster zwart en plaats daarop 520 concentrische cirkels van buiten naar binnen op point 400,300 (midden van het venster). Plaats daarna 255 concentrische cirkels van buiten naar binnen of van binnen naar buiten vanuit 400,300. De concentrische cirkels moeten eerst van zwart naar blauw kleuren en daarna van blauw naar zwart of wat u leuker vindt.

 

Bouw alvast 2 EVENT’s in. Een TRAPCLOSE (om het venster te sluiten) en een (WHEN RIGHTBUTTONDOWN (om later eventueel uw plaatje op te kunnen slaan).

 

 

nomainwin

 

WindowWidth = 800

WindowHeight = 600

open "cirkels" for graphics_nsb_nf as #w

#w "when rightButtonDown [rBDown]"

#w "trapclose [quit]"

#w "down; size 3;fill black"

#w "place 400 300"

 

for t = 1 to 512 step 2

#w "color 0 0 ";t/2

#w "circle "; 512 - t

next t

 

for t = 0 to 255 step 1

#w "color 0 0 ";t

#w "circle "; 255-t

next t

 

workshop 1 afb 2 cirkel

 

 

Nu de sterren invoeren.

 

#w "size 1"

call star 900,"12 141 147","3 67 65",800,600,10,10,4

call star 50,"12 141 147","3 67 65",800,600,80,60,8

call star 20,"157 29 15","3 67 65",890,600,80,60,4

call star 20,"157 29 15","3 67 65",890,600,80,60,8

call star 50,"147 151 10","3 67 65",900,700,360,100,10

call star 10,"66 147 4","3 67 65",900,700,360,100,10

call star 20,"101 6 153","3 67 65",800,600,360,100,6

call star 15,"12 141 147","3 67 65",800,400,120,50,26

wait

 

‘Eerst even nog de EVENTS stukjes voor de TRAPCLOSE en de rBDOWN

 

 

 

 

[rBDown]

confirm "plaatje bewaren?";yn$

if yn$ = "yes" then

#w "getbmp plaat 0 0 800 600"

bmpsave "plaat","plaatje.bmp"

end if

wait

 

[quit]

close #w

end

 

‘en tenslotte de SUB voor de sterren.

 

sub star nstars,bkl$,kl$,X1,Y1,xo,yo,r

for n = 1 to nstars

#w "backcolor "+bkl$

#w "color "+kl$

#w "place ";rnd(0)*(X1-3*xo)+xo;" ";(rnd(0)*(Y1-3*yo))+yo

#w "circlefilled ";rnd(0)*r

next n

end sub

 

 workshop 1 afb 3 cirkels

 

De SUB even onder loep nemen.

Aantal sterren = nstars

Achtergrond kleur =bkl$

Pen kleur = kl$ (color). Ik koos een willekeurige kleur RGB 3 67 65

Areaal begrenzing voor de sterren wordt gevormd door de boxen X1 Y1 x0 y0 met RND factor.

Sterren grootte r wordt ook met een RND() (random functie) waarde bepaald. De CALL en de RND(0) functie zijn op de Workshop behandeld.

 

Vroeger kon ik mooie letters uit Word van Microsoft halen, bewerken en in kleuren. Die techniek ben ik verleerd? Ik maak nu gewoon vanaf de site www.cooltext.com met de gratis graphic tekst generator een tekst en bewerk die tekst PHOTOSHOP CS2 (gratis versie) of met GIMP.

 

workshop 1 afb 4 rats

 

Met PAINT is het mij niet gelukt om iets artistieker te produceren.

 

Nog even wat geluid. Ga bijvoorbeeld naar de site www.panopreter.com en tik als voorbeeld tekst in:

 

The LIBERTY BASIC programming workshop 2019

....

The RATS KERT game

.

Enjoy it..

Strategic game written by (uw eigen naam hier)

 

Sla uw werk op. Speel de tekst na het tonen van het introscherm hier boven. Mijn voorbeeld tekst duurt 12 – 14 seconden. Daarna volgt een stukje reclame van de firma Panopreter.

Laat daarna nog wat animatie zien of doe zoals ik ….. Ik laat het bovenstaande scherm geleidelijk vervagen. Onder het bovenstaande scherm heb ik echter het voorlaatste scherm geplaatst.

De leden van de HCC!basic Interesse Groep gebruiken verschillende BASIC computertalen om programma’s te maken en of bestaande programma’s te verbeteren.

De  HCC!basic Interesse Groep ondersteunt haar leden en promoot het programmeren in BASIC. Er zijn vraagbaken aan wie vragen over Basic gesteld kunnen worden. Bovendien wordt elk kwartaal een elektronisch tijdschrift uitgegeven (in pdf) met interessante artikelen over programmeren in Basic. Verder verzorgen we mondelinge cursussen en leveren we broncode en cursussen. Op evenementen zoals de HCC-dagen, CompUsers-dagen en op afdelingsbijeenkomsten zijn er mensen van onze groep aanwezig om te demonstreren en u te woord te staan.

Er zijn veel basic-dialecten voor verschillende platforms, Windows, Linux en DOS, En daar zijn heel moderne en krachtige versies bij. PowerBASIC levert een zeer krachtige Basic voor Windows (PB9) en een Consolecompiler (CC5). Visual Basic .NET van Microsoft is een professionele programmeertaal. En daarnaast is Liberty Basic voor Windows zeer geschikt voor beginners en gevorderden. Basic is beslist niet verouderd maar nog steeds modern en blijvend in ontwikkeling.

Introductie Workshop Basic door Gordon Rahman

Ik ben altijd HCC!BASIC lid geweest. Omstreeks 1980 bezat ik een TRS-80 (Tandy Radio Shack) en daarom werd ik lid van de TRS80 Gebruikersvereniging. Toen de HCC ook een TRS80 Groep oprichtte, werd ik ook lid van de HCC! Ik leerde BASIC kennen en wat machine taal van de Z80 microprocessor, die in de TRS80 wordt gebruikt. Later bouwde ik een 80286 kloon en leerde QBASIC en wat MS-DOS. Toen kwam Windows en ik startte met Visual BASIC.

Ik heb veel listings over getypt en vele listings geschreven. BASIC is mijn hobby. Ik heb een desktop met Windows 10 waarop ik ook mijn TRS80 (emulator) draai. Tot nu toe schrijf en kopieer ik nog steeds BASIC programma’s, maar nu bijna uitsluitend voor mijn Windows PC. Natuurlijk gebruik ik een BASIC taal die Windows programma’s en ook de ouderwetse TRS80 BASIC kan draaien. De nieuwerwetse Basics zijn EVENT-driven (muis bestuurd) en ze zijn geen interpreter meer.

Een andere reden voor mijn club lidmaatschap was het idee dat gezamenlijk hardware inkopen voordelen bracht. Dat gebeurde op de beurzen en HCC-dagen. Natuurlijk heb ik ook software goedkoop aangeschaft.

Maar de belangrijkste reden waarom ik in een vriendenclub wilde zitten met gelijk gerichte interesse was en is, dat ik voor mijn hobby en plezier programmeer en dat met anderen kan delen en aan andere hobbyisten kan tonen. De HCC biedt daarvoor het podium bij uitstek. Ik wil mijn eigen gemaakte Windows programma’s (de listings) demonstreren. Ik ben daar niet de enige in. Ik heb twee cursus boeken (over Liberty en JustBASIC en alles over HTML 5) van leden die er niet meer zijn en hun hobby daarom niet meer kunnen demonstreren en of propageren. De HCC is ons enig publiek en podium. Ik heb vrienden die smachten naar het moment dat ze hun hobby kunnen demonstreren en of uitdragen.

Ik wil (nu ik gepensioneerd ben), weer volop mijn BASIC programmeren achterstand inhalen. Ik ben weer enthousiast gaan programmeren. Ik zou natuurlijk mijn 7 GB aan bestanden (tien duizenden BASIC listings) willen demonstreren, maar ik heb een grotere wens. Ik wil vooral de vroegere BASIC programmeurs ook weer aan het BASIC programmeren krijgen. Ze eindelijk zo ver krijgen dat ze hun project afmaken en dat aan de hobby vereniging tonen.

Ok, maar wat als die zegt geen oude listings meer te hebben? Wat als hij of zij al zijn of haar vroegere programma’s reeds omgezet heeft naar “moderne” talen? Wat als hij of zij het programmeren vroeger al te moeilijk vond? Wat als hij of zij alles van BASIC programmeren al weer vergeten is? Geen nood. Vroeger leerde je in 24-30 uur BASIC programmeren. Daar gaan we nu 1-2 jaar over doen en slechts gemiddeld 3-5 uur per maand. BASIC is niet moeilijker geworden. Alleen de microprocessoren zijn groter en sneller geworden. Wat als je niet weet wat te programmeren. Geen nood. We gaan samen (iedereen individueel) een programma schrijven.

Ik start een project BASIC programmeren voor Windows. We gaan samen een programma maken. We doen dat in de “Workshop” vorm. U schrijft thuis een deel van het programma en demonstreert gewoon dat het werkt. Als u even vast zit (of u komt er helemaal niet uit) dan bezoekt u zo een workshop avond (of ochtend) en we zullen proberen daar wat aan te doen. In dergelijke gevallen moet u wel uw listing tonen en enigszins uit leggen wat die listing zou moeten doen. Meedoen kost niets. Ik zal een gratis Windows-BASIC taal gebruiken. JustBASIC voor de absolute starter of LibertyBASIC voor de “doorzetters”. JustBASIC is gratis, maar kent daarom zijn beperkingen. LibertyBASIC is shareware en die kunt met een zeer forse korting eenmalig aanschaffen voor al uw computers. Wilt u alleen eenmalig komen kijken of kijken of het wat zal worden? Meld je dan vooraf aan voor de eerste sessies. Neem een memory-stick mee. U krijgt van mij daarop 2 GB aan listings en dergelijke, waarin ook een ‘elektronisch’ cursusboek, lessen, de helpbestanden in het Nederlands enz. op uw memory stick mee terug. Ik programmeer als hobby. Daarom gebruik ik BASIC (voor Windows). De beste leer taal voor hobbyisten.

Benodigdheden voor deelname aan een workshop:

Een computer of laptop waarop Windows 10 draait. Met LibertyBASIC of JustBASIC daarop geïnstalleerd.

(Met Linux kan het waarschijnlijk ook via de Windows emulator Wine)

Neem ook een USB stick naar de wordkshop mee.

Geef vooraf een seintje zodat ik materiaal kan voorbereiden voor de USB stick.

Ik demonstreer de eerste keer (via de lessen-module van LibertyBASIC) hoe ik mijn intro-scherm van de game heb gemaakt. Extra aandacht geef ik hierbij aan: RND(0), maken van een mp3 bestand van een geschreven tekst en het gebruik van Photoshop om plaatjes te maken (fotoshoppen).

De eerste Workshop was op 25 september te Amstelveen.

De volgende Workshop (voor HCC leden) is op 23 oktober om 20:15 in de Meent,  Orion 3, 1188 AM Amstelveen

(en verder op elke vierde woensdagavond van de maand behalve in december, juli)

 

Dit e-mailadres wordt beveiligd tegen spambots. JavaScript dient ingeschakeld te zijn om het te bekijken.

Voor het maken van Windows programma’s gebruik ik BASIC (Liberty BASIC)

(JustBASIC is een vereenvoudigde versie van LibertyBASIC)

Liberty BASIC is in elk geval geen “Visual” BASIC (visual GUI builder). Liberty BASIC wordt wel met een soort eigen (Visual GUI builder) geleverd, een BASIC listing (FreeForm.bas), waarmee je een listing kunt genereren van een venster waarin je objecten als knoppen, listboxen, comboboxen, radiobuttons enz. hebt gesleept en gevormd. De Liberty BASIC programmeertaal is eigenlijk een uitbreiding van QBASIC met EVENT DRIVEN Windows vensters. Je kunt dan ook nog gewoon in de console-mode (uit de MSDOS tijd) programmeren. Listings met regelnummers enz. Je kunt zelfs beide modes Windows en Console-mode gelijktijdig gebruiken. Liberty BASIC is een kleine, goedkope en zeer eenvoudige taal. Liberty BASIC is backward compatibel. Je kunt met weinig moeite oude listings (inclusief regelnummers) gewoon RUNNEN in de Console-mode van Liberty BASIC. Als je eenmalig een licentie aanschaft kun je LB op al je computers installeren en je hoeft nergens royalty’s voor te betalen. Liberty BASIC is uitstekend geschikt voor onderwijs doeleinden. Een speciale Lessen-mode geeft de mogelijkheid om projectmatig te werken. BASIC is een algemene opstap computertaal voor een ieder die in computertalen of programmeren geïnteresseerd is. Liberty BASIC is geen INTERPRETER maar een JIT-compiler (zoals JAVA). Liberty BASIC heeft een commando-set voor maken en controleren van SPRITES en uiteraard ook geluid WAV en MIDI en kan verder DLL bestanden gebruiken. DirectX, OPEN GL, ODBC, SQLite, MSQL enz.

Liberty BASIC is gemaakt door Carl Gundel speciaal voor “amateurs”, beginners en echte hobbyisten die Windows willen kunnen onderzoeken. LibertyBASIC is geschreven met de taal Smalltalk (zie Wikipedia). Smalltalk ligt aan de grondslag van talen als JAVA, PHP, Python enz.?

De “nitty-gritty” van Windows registers, hacken, virussen enz. bespreken is op ons forum (workshop) echter taboe. Liberty BASIC is overzichtelijk en eenvoudig waarmee je de draad eenvoudig weer kunt oppakken en snel weer aansluiting kunt vinden bij amateur programmeren. De kleine taal (Liberty BASIC) produceert geen modulaire listings, doch één listing per programma. Alle niet strikt noodzakelijke decoraties en declaraties worden door Liberty BASIC van de programmeur overgenomen. Bijvoorbeeld de nauwkeurigheid van numerieke variabelen wordt door Liberty BASIC zelf bepaald. Vooraf hoef dat dus niet gedeclareerd te worden (INTEGER, DOUBLE, SINGLE precision enz.). Omdat Liberty BASIC ook alle Windows DLL bestanden kan openen en aanroepen, zal een Liberty BASIC programmeur in die gevallen zich natuurlijk wel moeten houden aan de regels die gelden qua declaratie vooraf en nauwkeurigheid (grootte) van variabelen. Trouwens, zonder om daar nu dieper op in te gaan, merk ik op dat een CALL SUB ook lokale variabelen naast globale variabelen kent. Om onder andere rijtjes variabelen in een DLL in te voeren of uit te lezen heeft Liberty BASIC het STRUCT model ingevoerd.

Een vergelijking tussen Liberty BASIC en Visual BASIC.

Visual BASIC plaatst bijna elke listing module in een eigen aparte map. Dat is voor grote (gigantische) listings efficiënter en misschien ook beter, maar voor de beginners en programmeurs die nog geen specifieke computertaal hebben gekozen is het de ver van mijn bed show en het maakt dat het overzicht op de listings en daardoor opzoeken van structuren en fouten voor een amateur niet eenvoudiger wordt. Uiteraard betekent het ook voor de docent aan wie gevraagd zal worden te helpen bij het traceren waar een eventuele programma fout kan liggen “leiden in last”.

Het “drag and drop” werk is in VB zeer veel uitgebreider dan in LB, maar die manier van programma’s maken heeft ook zijn beperking omdat je niets origineels op je eigen manier kunt oplossen. Ook krijg je geen inzicht in hoe VB (of Windows) eigenlijk in elkaar zit. Je leert nooit van je fouten. Dus als je goed kunt omgaan met VB, goed dan ken je alleen VB goed.

Ik gaf eens aan absolute beginners opdracht om een bal (een cirkel met een kleur gevuld) over het scherm te laten bewegen en tegen de (4) zijkanten te laten weerkaatsen. In VB werd de bal in een eigen (grafisch) scherm geplaatst, waarna dat scherm werd bewogen en bij gedetecteerde botsing werd de bewegingsrichting van het balscherm aangepast.

De LB beginners tekenden gewoon alleen een bal op het scherm en detecteerden of de bal de schermgrenzen bereikten waarna de bewegingsrichting van de bal werd gewijzigd. De rand van de bal had de achtergrond kleur, om het effect van vloeiend bewegen zichtbaar te maken.

VB was ontwikkeld om het tikwerk (opent mogelijkheden voor syntax error ’s) te vereenvoudigen doordat je objecten kunt slepen en plaatsen in vensters, waarna een zeer uitgebreide listing van de opstelling wordt gegenereerd. Maar knippen en plakken in Liberty BASIC is even tijdrovend als slepen en plaatsen in VB, maar heeft in LB het voordeel dat de programmeur aan zijn efficiëntie gaat werken. De eenvoud straalt af van Liberty BASIC bij het vooraf declareren van variabelen. Dat hoeft NIET. Alleen wanneer een functie uit een DLL (Dynamische Library Listing) van Microsoft of iemand anders vereist dat de nauwkeurigheid van variabelen vooraf moeten worden aangegeven, dan moet dat in Liberty BASIC ook. Liberty BASIC beschouwd een venster, evenals een COM-poort als een object dat geopend kan worden. Dus je kunt je hardware gewoon rechtstreek aanspreken.

Hier zie je in één oogopslag VB5 (Visual BASIC 5) en Liberty BASIC 4.04

 

Visual BASIC editor                                                  Visual BASIC controls

 

Liberty BASIC editor                                               Liberty BASIC controls

  

 

Visual BASIC heeft 21 besturingsfuncties (“controls”) ingebakken. Liberty BASIC heeft 11 besturingsfuncties ingebakken (“native”). Met beide bovenstaande programmeertalen kan elk programma ter wereld worden geschreven. Visual BASIC heeft in totaal meer dan 2000 vooruit ingebakken functies en subroutines. Liberty BASIC heeft er nog geen 200. Als een functie niet “native” (ingebakken) aanwezig is, dan kun je die functie uit de DLL van Windows halen of die functie zelf schrijven of aanpassen. Je kunt meestal Windows opdragen om even zijn eigen routine uit te voeren. Met het commando stylebits kun je bijna alle stijlen van een control wijzigen.

Belangrijke onderdelen van programmeer onderwijs zijn leren debuggen en de beschikbaarheid van goede les en studiemateriaal.

BASIC is aanvankelijk verguisd omdat de vakdocenten de fantastische knutselwerken van de studenten niet eenvoudig konden volgen en of op fouten konden controleren (debuggen). Bij de keuze van een computertaal als instructietaal in het onderwijs is de nauwkeurigheid van getal structuren, of de rekensnelheid van de rekenchip enz. van minder belang. Hoe een programma werkt is minder belangrijk dan als dat het programma goed werkt. Ik stel dat programmeer onderwijs nodig is, omdat we daarmee leren en vaardig worden in methodisch denken en ordenen en meer nog omdat programmeren het intuïtief zijn vergroot. Programmeren vereist naast organisatorisch talent ook creativiteit. Het lijkt paradoxaal, maar de NIET modulaire programma’s kunnen juist eenvoudiger op fouten gecorrigeerd (debuggen) worden, omdat er regel voor regel in één (vaak klein) bestand naar fouten en foute structuren gezocht kan worden.

De onderwijs gevende en de programma opdrachtgever hadden geen controle meer over de listings die door (BASIC)programmeurs geproduceerd werden. De eerste BASIC talen boden veel mogelijkheden tot “spaghetti” programma’s, waardoor de docenten hun “debug” taken niet konden uitvoeren. Die euvels aan de talen zijn intussen eenvoudig verholpen. BASIC kreeg bij de nieuwere versies structuur. Na de herintroductie van Visual BASIC door Microsoft werd procedureel BASIC toch verlaten ten favoriete van Object Georiënteerde Talen en netwerk integratie (VB.NET). Uiteindelijk is daarmee het programmeer onderwijs aan jongeren en op middelbare scholen verloren gegaan, omdat het debuggen van dergelijke talen al helemaal niet mogelijk is. Alle objecten worden geïmporteerd of zijn ontoegankelijk. Voor de productie is dat natuurlijk beter, “het wiel hoeft niet steeds opnieuw “… enz., maar voor het onderwijs is dat niet waar. De vroegere BASIC programmeur moest elke sub routine of procedure vroeger zelf schrijven en zelf regel voor regel debuggen. Daar leert een beginner het meeste van. Tegen het argument van de beginner “alles is reeds geprogrammeerd” kon ook een OOP taal of een taal die duizenden vooraf ingebakken functies heeft, niet op.

Nederlandstalig Liberty BASIC les en studiemateriaal en voorbeelden is aanwezig bij vele leden van de vroegere HCC BASIC Interesse Groep. Er werden constant door leden “opgeleid” om BASIC workshops te kunnen opzetten. Uiteraard ontbreekt het daar alleen aan didactische vaardigheden. Deze vaardigheden zijn in deze campagne niet nodig. We zijn een grote groep hobbyisten met veel tijd. We kunnen elke fout in elke BASIC listing vinden en verbeteren.

Hier volgt een mogelijke introductie sessie (eerste Workshop)

Programmeer een dergelijk plaatje als hier onder staat. Of maak een eigen introductie scherm voor uw game. Mijn game heet Rats Kert. Het voorbeeld zal neem ik als te behandelen voorbeeld. Ik laat een elektronische stem een introductie tekst uitspreken.

Ook is er reeds in dit eerste scherm een vorm van animatie.