game maker
Gebruikersnaam:
Wachtwoord:
Home Info Forums Help
Welkom, Gast. Alsjeblieft inloggen of registreren.
De activerings e-mail gemist?
+  Forums
|-+  Werken met Game Maker
| |-+  Tutorials en Uitbreidingen (Moderator: Maarten Baert)
| | |-+  [Scr] Machtswortel
Pagina's: [1]
« vorige volgende »
Print
Advertenties

ChrisCompany
Gebruiker


Offline Offline

Berichten: 1412


WWW
« Gepost op: 24 September 2008, 20:16:41 »

Machtswortel in GM
Gamemaker versie: In ieder geval  Game Maker 5.x Game Maker 6.x & Game Maker 7 (Oudere versies waarschijnlijk ook)
Moeilijkheidsgraad: Makkelijk
Beschrijving: Rekent de opgegeven machtswortel uit.

Het is eigenlijk een super simpel script dat werkt op de x^(1/n) manier. Waarbij x het getal onder de wortel is en n de macht voor de wortel. Het is niet moeilijk, maar voor de mensen die minder goed in GML zijn en zoiets toch nodig hebben of voor de mensen die er zelf niet uitkwamen heb ik hier het script staan. Ik heb de zoekfunctie gebruikt, maar ben niet een topic als deze tegen gekomen. Vandaar de post.

De code:
GML:
// machtswortel(n,x);

// Beschrijving: Machtswortel in GameMaker
// Arguments: argument0 is de machtswortel van argument1 (n root x)
// Bijvoorbeeld: Machtswortel(4,81) levert 3 op.

var _n;
if is_real(argument1) {
_n = power(argument1,(1/argument0)); }
else { _n = 0; }
return _n;

Toelichting:
Eerst slaat hij de variable _n tijdelijk op in geheugen, dan kijkt hij of x (het getal onder de wortel) een getal is. Als dat zo is dan berekent hij x tot de macht 1/n, wat hetzelfde is als een machtswortel en slaat dat op in de tijdelijke variable _n. Als x geen getal is dan returned de code altijd 0.

Mocht je zeker weten dat wat je invult goed is (en dus ook geen gebruik maakt van user input ed.), kun je het onderstaande scriptje gebruiken. Veel cpu zuiniger en korter.
GML:
//machtswortel(n,x): de n'de machtswortel van x
return power(argument1,1/argument0);
Dankzij Matrebatre.


Hoe in je spel/programma te gebruiken?:
- Maak een nieuw script aan (ctrl+alt+c), benoem het 'machtswortel' en vul als code de bovenstaande code in. Druk op de valideer knop, het groene v'tje.
- Maak een object aan en voeg bijvoorbeeld in het 'space'-event de volgende code toe:
GML:
var n, w, r;
n = get_integer("Vul hier uw getal in als macht voor de wortel",0);
w = get_integer("Vul hier uw getal in als getal onder de wortel",0);
r = machtswortel(n,w);
show_message(string(r));
- Maak een room aan, plaats en het object en run je game : )

Gr. Christiaan

« Laatste verandering: 18 Januari 2011, 14:37:17 door ChrisCompany »

Naar boven Gelogd

Hedanito
Gebruiker


Offline Offline

Berichten: 758


« Antwoord #1 Gepost op: 8 Februari 2009, 21:08:45 »

Die controle kun je er denk ik beter uit laten.
Het zorgt ervoor dat het onnodige cpu gebruikt en je krijgt geen error als je iets verkeerd hebt ingevuld, waardoor je de fout minder snel vind.


Naar boven Gelogd

Maarten Baert
Forumbeheerder


Offline Offline

Berichten: 4942

Gelieve quote te gebruiken als je PMs beantwoordt.


WWW
« Antwoord #2 Gepost op: 10 Februari 2009, 19:55:21 »

Wat is er mis met:
GML:
if is_real(argument1) {
return power(argument1,(1/argument0));
} else {
return 0;
}
?

Of nog beter, laat die controle gewoon weg. De maker moet niet zo stom zijn om strings in te geven, dan krijgt hij nu eenmaal errors. Nu maak je het de maker alleen maar lastiger: hij heeft geen idee waarom zijn spel niet werkt want hij ziet geen error. Het beste lijkt mij dus gewoon:
GML:
return power(argument1,(1/argument0));


Naar boven Gelogd

ChrisCompany
Gebruiker


Offline Offline

Berichten: 1412


WWW
« Antwoord #3 Gepost op: 15 Februari 2009, 11:29:21 »

Het is maar een voorbeeld code.. Als je de code snapt kun je zelf ook wel een beetje ermee klooien. Het is alleen maar om te laten zien hoe je een machtswortel via gamemaker kunt uitrekenen.

En dat is dus gewoon dmv: power(getal1,(1/getal2)).

Nogmaals, het is dus gewoon een voorbeeld script over hoe je het zou kunnen doen. En de reden waarom ik er een "check" in heb gedaan is voor als mensen het willen importeren in bijv een zelf gemaakte calculator. Zelf ben ik een tegenstanders van errors in een spel, waar dan ook. Dus als de gebruiker van de rekenmachine een string invult krijgt ie een 0 terug ipv een error.


Naar boven Gelogd

Advertenties
« vorige volgende »
Pagina's: [1]
Print


Topic Informatie
0 geregistreerde leden en 1 gast bekijken dit topic.

Ga naar:  

Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines
www.game-maker.nl © 2003-2019 Nederlandse Game Maker Community