Mathematische Grundlagen
Übersicht

g0lfdrivingl3oBetreff: Mathematische Grundlagen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
klingt zwar blöd aber kann man mir mal bitte jemand den Code für mathematische Grundlagen wie Addition, Subtraktion und Multiplikation erklären? Ich möchte in einem Spiel ein Verkaufssystem einbauen und brauche das dafür.. Ich füge hier mal noch nachträglich den Code dazu ein, damit es besser nachvollziehbar wird: Code: [AUSKLAPPEN] ;Gemüseanzeige Locate 400,420 Write "M: " Write AnzahlMOH$ ;DIESER WERT SOLL MIT DEM UNTEN EINGEGEBENEN ADDIERT WERDEN Write "K: " Write AnzahlKAR$ ;DIESER WERT SOLL MIT DEM UNTEN EINGEGEBENEN ADDIERT WERDEN ;Punkteanzeige Locate 550,420 Color 100,100,100 Write "Punkte: " Write Punkte$ ;############ H U D #################; Color 500,500,500 Locate 10,20 Write "Kartoffeln: " Write PreisKAR Locate 10,40 Write "Möhren: " Write PreisMOH Locate 200,20 KaufKAR$ = Input$ ("Wieviele Kartoffeln? :") Locate 200,40 KaufMOH$ = Input$ ("Wieviele Möhren? :") While Not KeyHit(1) If KeyDown(2) Then Goto farm1 Wend Außerdem soll der Stückpreis(Festpreis) dann noch mit der Anzahl multipliziert werden und von dem "Vermögenswert" abgezogen werden.. Danke ![]() |
||
Der Phaeton. Einzigartig wie ein Kunstwerk. |
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
Vielleicht hast du ja schon versucht, deine Eingaben (Strings) mit Integern oder mit anderen Strings zu multiplizieren. Dann müsstest du auf die Fehlermeldung "Operator cannot be applied to strings" gestoßen sein. Das bedeutet, dass du deine Eingabe erst zu Integer (Int ![]() ![]() Beispiel: BlitzBasic: [AUSKLAPPEN] Local qtyCarrots% = Int( Input("Wie viele Karotten moechtest du kaufen? ") ) Außerdem solltest du dir überlegen von Print und co. auf Text ![]() ![]() Gruß, Tennisball |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also wenn es um Preise geht, würde ich immer in "Cents" rechnen: Alle deine Variablen werden INTEGER, also Ganzzahlen ohne Komma. Ein EUR wird also besser als 100 Cent betrachtet! "2,34 EUR" verarbeitest Du besser als 234.
Das Addieren, Subtrahieren und Multiplizieren ist dann kein Problem. z.B. der Kauf von Karotten: BlitzBasic: [AUSKLAPPEN]
Sobald Du Geld darstellen willst, zerlegst Du den Wert in die hinteren beiden Stellen (Cents) und den vorderen Rest: BlitzBasic: [AUSKLAPPEN] Print "Karotten kosten heute " + GeldString(PreisKarotten) An Deiner Stelle würde ich abgeschlossene Vorgänge immer gleich in Funktionen einschließen. Dann bleibt Dein Code übersichtlich und bedienbar. Schau mal auf meine drei Tutorials. Das dürfte genau zu Deinem Thema passen: 1. Variablen addieren: https://www.blitzforum.de/foru...hp?t=33456 hier die Kapitel I, II, III und vielleicht noch IV 2. Functionen benutzen: https://www.blitzforum.de/foru...hp?t=33468 hier die Kapitel I und II 3. Typische Spielschleifen: https://www.blitzforum.de/foru...hp?t=33468 hier die Kapitel I, II, III und vielleicht noch IV Und noch ein letzter Tipp: Geh es "klein" an. Bau erst mal den Code für das Kaufen von Karotten komplett zu einenm lauffähigen Spiel fertig: "Das Karottenkauf-Spiel. Der Spieler kann nur solange Karotten kaufen, wie sein Geld und der Vorrat reicht." Wenn das mal läuft, kannst du einen zweiten Artikel dazunehmen. Dabei wirst Du auf neue Probleme stossen. Im "Karotten- und Kartoffel-Spiel" kann der User frei wählen was er als nächstes kauft" Erst in einem dritten Schritt würde ich es auf beliebige viele Gemüsesorten erweitern. Auch hier wirst Du mit ganz neuen Problemen konfrontiert werden. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
- Zuletzt bearbeitet von Midimaster am Di, Okt 29, 2013 10:49, insgesamt 4-mal bearbeitet
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Natürlich sollte dann auch der Variablentyp von AnzahlMOH$ und AnzahlKAR$ nicht String ($) sonder Integer (%) sein.
@Dem was Midimaster gesagt hat: Der Grund dafür ist, wenn du Floats (Gleitkommazahlen) verwendest, werden die sehr ungenau, wenn sie groß werden. Das heißt, z.B. für 100€ hast du eine Genauigkeit von 0.1 ct (Werte aus der Luft gegriffen zwecks Beispiel. Wie viel es wirklich ist, weiß ich grad nicht), für 100000€ aber nur 1€, was heißt, dass die Centwerte wegfallen. Wenn man was Genaues will, sollte man deswegen Integer verwenden, da die immer die gleiche Genauigkeit haben (dafür geringere Minimal- und Maximalwerte als Float). |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Ungenauigkeit der Float-Variablen ist nicht der einzige Grund. Bei Beträgen wie "1.35" läßt sich relativ leicht ein String "1.35 EUR" erzeugen, der auch nach einem Geldbetrag aussieht.
Bei "1.30" oder "1.00 " wird es schon unschön: Hier würde bei Floats dann plötzlich "1.3 EUR" bzw. "1 EUR " angezeigt. Teilst Du einen Betrag wie "4.35" durch 2 hast Du bei INTEGER nachher "2.17 EUR" stehen. Bei Float aber "2.175 EUR". Um sowas zu vermeinden müsste zusätzliche Funktionen schreiben. Mit INTEGER haste deutlich weniger Arbeit. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group