Archief - check: Vier op een rij + paar vraagjes

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Kn0t

Legacy Member
Ik ben momenteel aan mijn stage bezig en daar wordt in vb.net geprogrammeerd. Omdat ik tot nu toe vooral met Java ben bezig geweest ben ik dan maar aan een spelletje in vb.net om die taal wat gewoon te worden. En 't is vier op een rij geworden. :)
.NET framework 1.1 is vereist

- 2 spelers kunnen tegen mekaar spelen (elk om beurt doet een zet)
- je kan ook met 1 speler tegen een AI computer speler, en er zijn 4 beschikbare moeilijkheidsgraden.

todo: network play en AI optimaliseren

download (installer): http://www.knot.be/4Op1Rij.NET/VierOpEenRij.msi
source (vs.net project): http://www.knot.be/4Op1Rij.NET/VierOpEenRij.rar

Enkele vraagjes:
  • als het geluidje van de schijf die valt voor de eerste maar wordt afgespeeld, blijft dat ff hangen. iemand enig idee waarom?
  • wanneer er een animatie is (schijf die valt), kan ik het venster niet verplaatsen. Ik gebruik System.Threading.Thread.Sleep() voor de timing van de animatie, mss ligt het daar aan? In java deed ik da altijd op die manier en gaf dat geen problemen.
  • zelfde probleem wanneer de computer speler aan het "denken" is
  • algemeen: als iemand nog ideeën heeft om de AI te optimaliseren, graag :p
    Hij is nog altijd niet onklopbaar. Momenteel wordt minimax met alfa-beta pruning gebruikt, tot een maximale diepte van 10 zetten. Wanneer ik de diepte nog meer verhoog duurt het mij te lang. (hangt natuurlijk ook van je pc af)

Asshen

Legacy Member
Eerst effe melden dat ik het niet downloadde, maar toch zo probeer te antwoorden op je vragen.

Enkele vraagjes:
  • als het geluidje van de schijf die valt voor de eerste maar wordt afgespeeld, blijft dat ff hangen. iemand enig idee waarom?

  • Waarschijnlijk laad je het geluidsbestand pas wanneer je het voor het eerst nodig hebt. Er moet(en) dus (een) object(en) geïnstancieerd worden, wat voor een delay kan zorgen.

    [*]wanneer er een animatie is (schijf die valt), kan ik het venster niet verplaatsen. Ik gebruik System.Threading.Thread.Sleep() voor de timing van de animatie, mss ligt het daar aan? In java deed ik da altijd op die manier en gaf dat geen problemen.

    Thread.Sleep duidt op de thread die op dat specifieke moment uitgevoerd wordt op de processor. Als je zelf geen extra threads specifieerde, is er normaal slechts 1 thread aanwezig, namelijk de main thread van je applicatie.
    Als je die main thread laat slapen zal je natuurlijk rare gevolgen krijgen.

    K.

fretn

Legacy Member
nog nie getest (ben op m'n werk), maar preload je je uw geluiden ?
of moet hij ze telkens als je ze afspeelt nog inladen van uw hardeschijf ?

Silenger.BE

Legacy Member
Idd sleep kan alleen de huidige thread laten w8, want de cpu kan maar max één thread laten runnen, dus nooit parallel multitasking (tenzij met extra cpu of hyperthreading)...
Dus zorg dat je animatie in een apparte thread runed, die je laat w8...

Als je sleep gebruikt in de main thread zal voor een tijd de message que niet worden behandeld, waardoor in eens alle controls niet meer reageren enz...

Kn0t

Legacy Member
Die geluidjes : het probleem is dat er blijkbaar geen standaard manier bestaat om geluid af te spelen in vb.net, daarom moest ik met deze klasse werken,
http://www.eggheadcafe.com/forums/ForumPost.asp?ID=4310&INTID=8
Die speelt wav's dan af via winmm.dll
Waarschijnlijk heeft het dus te maken met het inladen van die dll, want het is enkel bij het allereerste geluid.

En dan over die threads. Is er dan een propere manier om te wachten tot de animatie ( de thread dus ) voltooid is? Wanneer ik animatieThread.Join() doe, heb ik nog altijd hetzelfde probleem, vermits de main thread dan ook geblokt is.

In Java is het toch wa makkelijker zen, daar heb je altijd de event dispatch thread, een aparte thread die events en scherm updates voor zijn rekening houdt. :p

Asshen

Legacy Member
Gebruik een Timer man (gebruik de standaard Timer of maak er zelf ene).
Threads dienen niet om als timer gebruikt te worden :)

Silenger.BE

Legacy Member
Kan je in .NET niet gewoon LoadLibraryA("winmm.dll"); doen bij start van prog, dan als die class ook de library load zal windows die dll niet meer moeten lezen van disk en mappen in de processspace. Als hij al geladen is moet windows gewoon de handle zoeke en die returnen, waardoor je die delay door het inlezen van de dll niet meer hebt.
Ben er zeker van dat .NET een of andere functie heeft die het mogelijk maakt om modules te laden als je niet rechtstreeks winapi kunt gebruiken...

Asshen

Legacy Member
Als hij gebruik maakt van de eerder vermelde preloading, zal het ook opgelost zijn.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan