villeicht ne schleife? :D

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

fatzzke

Betreff: villeicht ne schleife? :D

BeitragSa, Jul 21, 2012 3:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Zahl x geht immer um 30 runter
und die Zahl px geht jeweils immer eins rauf
Das kann man doch bestimmt besser lösen als jede Zahl einzelnd reinzuschreiben? ^^
if x = 270
px = 1

if x = 240
px = 2

if x = 210
px = 3
......

if x = -30
px = 11
  • Zuletzt bearbeitet von fatzzke am Sa, Jul 21, 2012 16:46, insgesamt einmal bearbeitet
 

BBPro2

BeitragSa, Jul 21, 2012 3:36
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, die lösung hast du auch schon selbst genannt: ne schleife

wenn ne zahl immer um 1 rauf geht ist ne naive schleife, sprich:

Code: [AUSKLAPPEN]

for px = 1 to 11
 print px
next


jetzt wird px immer um 1 raufgezählt.
willst du gleichzeitig dass x um 30 vermindert wird fängst du einfach mit dem startwert an
und verminderst es dann in jedem schritt um 30, also

Code: [AUSKLAPPEN]

x = 270
for px = 1 to 11
 print x
 print px
 ; nächste schleife vorbereiten, sprich x um 30 vermindern
 x = x - 30
next



da die frage darauf hinweist, dass du noch ziemlich am anfang deiner karriere stehst hier noch ein
nützlicher fakt der dir bisher vielleicht nicht bekannt war:
jede schleife kann mit "step" so manipuliert werden, dass nicht um 1 sondern um mehr (oder negative werte) hochgezählt wird. z.b.

Code: [AUSKLAPPEN]

for x = 270 to -30 step -30
 px = px + 1
 print x
 print px
next


wäre ein alternativer ansatz bei dem x für die schleife verwendet wird und nicht px

aMul

Sieger des Minimalist Compo 01/13

BeitragSa, Jul 21, 2012 6:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin mir nicht sicher ob BBPro2 die Frage richtig verstanden hat, wobei er sicherlich For-Schleifen Anfänger-gerecht erklärt.

Wenn ich die Frage richtig verstehe möchtest du eine Art mathematische Funktion schreiben, die px einen gewissen Wert zuweist, abhängig von x.

Liege ich richtig ist "mathematische Funktion" hier das Stichwort.
Was du zu suchen scheinst ist eine lineare Funktion die 270 den Wert 1 zuweist, und 240 den Wert 2.
Die entsprechende Funktionsgleichung lässt sich finden indem wir einfach diese beiden Punkte ( (270, 1), (240, 2) ) in die allgemeine lineare Funktionsgleichung px = a*x + b einsetzten.

Als Lösung kriegen wir a = -1/30 und b = 10, mit der resultierenden Gleichung px = x/(-30) + 10.


Alternativ lässt sich das ganze natürlich auch mit If Abfragen lösen, wobei du dort dann die Parameter mit beschriebenen For-Schleifen durchlaufen kannst. Hast du dann den richtigen x Wert gefunden kannst du einfach mit Exit die Schleife abbrechen und hast dann den richtigen px Wert. Allerdings ist diese Lösung langsamer und umständlicher als die simple Rechnung oben.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver

Midimaster

BeitragSa, Jul 21, 2012 8:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber auch das führt zur Lösung:

BlitzBasic: [AUSKLAPPEN]
px = Int( (300-x) / 30 )
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
 

BBPro2

BeitragSa, Jul 21, 2012 9:35
Antworten mit Zitat
Benutzer-Profile anzeigen
ups es war spät als ich geantwortet hab Very Happy
 

fatzzke

BeitragSa, Jul 21, 2012 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Very Happy
Die mathematische funktion ist genau das was ich gesucht habe Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group