Hejsan, Hej Joakim! För att jag kan inte behandla hotseatspelare, AI och nätverksspelare lika, eftersom input hos hotseatspelare kommer från ett annat håll och inte från notify. Därför måste jag "specialbehandla" hotseatspelaren så att säga =). Jag skulle nog löst det på följande sätt:luffarschack i visual basic, ett litet "designproblem"
har ett litet "designproblem" när det kommer till ett luffarschackspel jag gör =).
Det är så i mitt luffarschack ska jag kunna ha 3 olika typer av spelare. hotseat (sitter vid datorn), datorspelare och en nätverksspelare.
Jag har designat så att jag ahr ett interface Player som har en metod notify(x as integer, y as integer), meningen var att jag skulle meddela spelaren om det nya draget och sen så få ett svar tillbaka så behöver jag inte bry mig om vilken typ av spelare jag har att göra med.
Har en controllklass som håller i spelbordet och i spelarna och så har jajg en viewklass som ritar ut allt och tar även in input från hotseat'n (eftersom "form1" ligger i view'n).
Nu kommer mitt problem. När jag anropar notify för datorspelaren och nätverksspelaren så kan jag ju sitta och vänta på svar, men hur gör jag med hotseat'aren? Jag kan bara få input från hotseat'aren om jag går ut från notify och sen låter form1 få sitta och lyssna på mouseDown-händelsen. Kan man på nått sätt göra så att man lyssnar efter mouseDown när nofity(..) anropas för en hotseat-spelare? Att vid skeded när notify anropas sitta och vänta på en mustryckning och sen returnera de nya koordinaterna?
Lite pseudokod kanske förklarar vad jag menar:
notify för datospelare:
notify:
newX, newY <- kör algoritm för att hitta ett nytt drag
return newX och newY
notify for nätverksspelare:
notify:
skicka över x, y till nätverksspelaren
vänta på svar
newX, newY <- svar från nätverksspelaren
return newX och newY
notify för hotseatspelare
notify:
vänta på anrop från mouseDown som ligger i form1 <== problem
newX, newY <- svar från mouseDown
return newX och newY
Hoppas ni förstår mitt problem.
mvh Joakim RosendahlSv: luffarschack i visual basic, ett litet "designproblem"
Jag fattar inte varför du säger dig vilja sitta och vänta i metoden notify?
vb.net är ju händelsestyrt och notify lever ju bara vid anrop?eller?
sen returneras svaret till därifrån anropet kom.Sv:luffarschack i visual basic, ett litet "designproblem"
/Joakim.Sv: luffarschack i visual basic, ett litet "designproblem"
En tråd kör spelmotorn
En tråd per "interface" mot spelmotorn
En tråd för fönstret
Så om du kör med sk. hotseat, dvs. två spelare lokalt på datorn, så har du två trådar. Dessutom har du en tråd för fönstret samt en för spelmotorn.
Fönstrets tråd ser till att några gånger sekund kolla om saker behöver ritas om/Invoke-anrop för att rita om
"interfacen":s enda uppgift är att tala om förflyttningar samt att få reda på när någon annan har gjort något