PDA

Volledige versie bekijken : spelers positioneren aan tafel (360 graden)


Tali-banaan
%Europe/Berlin %972 %2007, 00:21
Hallo allemaal,

Mijn pokerspelletje zal gebruik gaan maken van een top-down view. Een zicht van bovenaf dus om de actie te volgen. Ik ben redelijk nieuw in Actionscript en Flash, dus dit leek me het makkelijkste.

De class MyTable heeft een property genaamd aantalSpelers. Bij het aanmaken van deze tafel worden ook gelijk deze spelers aangemaakt. Voor iedere speler wordt een object aangemaakt met wat random zaken zoals kapsel en geslacht (dit heb ik nog niet gemaakt) en ook het startbedrag (1000 fishes) wordt meegegeven.

Nu wil ik dat de spelers altijd zo ver mogelijk van elkaar af zitten. Ik heb een ronde tafel en als er 2 spelers meedoen dan zit de ene lijnrecht tegenover de andere (dus een verschil van 180 tussen de twee zeg maar). Bij vier spelers zitten de spelers ieder op 90 graden, en bij 10 spelers (het maximum) zit er nog maar 36 graden ruimte tussen de spelers.

Mijn vraag is, hoe doe ik dit?

Dauntless
%Europe/Berlin %976 %2007, 00:26
Een cirkel is 360 graden.

Je hebt 10 spelers: Elke speler zet zich dan op 36 graden van de volgende. Echter komen begin en eindpunt dan samen uit. Je moet dus eigenlijk rekenen voor 11 spelers, zodat speler 1 niet op de schoot van speler 10 zit.

In AS wordt dit:
var angleIncrement:Number = 360 / 11 / 180 * Math.PI;//omzetten naar radialen
var radius:Number = 100; //de afstand van elke speler tot het middelpunt van de tafel
for(var i:Number = 0; i<players.length; i++)
{
players[i]._x = Math.cos(angleIncrement * i) * radius;
players[i]._y = Math.sin(angleIncrement * i) * radius;
}

Overigens is 'MyTable' een slechte keuze als classenaam. 'my...' wordt meestal gebruikt om instances aan te tonen. Gewoon 'Table' is het beste. (En probeer ook om je bij 1 spreektaal te houden: 'myTable' is engels en 'aantalSpelers' is nederlands... Dit kan het voor anderen (die je bv helpen met je code) erg ingewikkeld maken.)

Ps: Het kan zijn dat je niet die '+1' moet doen bij de spelers... Probeer dus eventueel ook gewoon met 360 / 10... Ik kan momenteel niet helder genoeg denken om er zeker van te zijn :p.

Tali-banaan
%Europe/Berlin %601 %2007, 15:26
bedankt :)