Logikproblem -> Parameterfunktion....
Übersicht

![]() |
TankbusterBetreff: Logikproblem -> Parameterfunktion.... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey ihr. Ich hab ein kleines Problemchen.
Und zwar geht es um ein Menü. Ich Erstelle ein Fenster (x=-300,Y=0) mit der Y-Skalierung t*50 Das ganze beruht auf Draw3D, wo die X Achse quasi mitten durch den Bildschirm verläuft. Mein Fenster soll bei t Einträgen dann so aussehen: Das mit der Skalierung ist ja kein Problem, nur die Positionierung der Einträge will irgendwie nicht. Code: [AUSKLAPPEN] For i=1 to t
F(i,t)=? ;F(i,t)=Y-Wert von Eintrag i bei insgesamt t Einträgen ;) Next Ich hab wirklich keine Ahnung, wie ich das machen soll. Hab mir schonmal ein kleineres Modell gemacht, wo die Skalierung einfach nur t entspricht. Bei t=3 F(1,3)=1 F(2,3)=0 F(3,3)=-1 Bei t=2 F(1,2)=.5 F(2,2)=-.5 Aber ich komme nicht so richtig dahinter, obwohl ich schon soo lang überlegt hab, und es eigentlich ganz einfach aussieht ![]() Wenn t immer konstant ist, ist es für mich auch kein Problem die Funktion zu erstellen, aber da t noch als 2ter Parameter ins Spiel kommt, weiß ich nicht, wie ich da rangehen soll. Ich hoffe ihr könnt mir helfen. |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Anstatt einem Array Types nehmen. Ein Container und so viele Einträge wie du brauchst. Beim erstellen eines neuen Eintrags lässt du den Container mitwachsen. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nja, nur ist mein ganzes Menü mit Arrays aufgebaut. Bis jetzt hatte ich immer nur ein billiges Inferface, dass die Einträge bei z.B. Y=i*60 Angezeigt hat.
Aber jetzt will ich das ganze dynamisch positionieren, und da liegt das Problem. Ich könnte alles Hardcoden, aber ein Fenster könnte bis zu 10 Einträge haben, das ist dann ein bisschen viel Arbeit. Außerdem will ich alles schön dynamisch in meinem Code halten. Das problem ist ja, dass ich alles immer zentriert halten will. (siehe Bild) Bei 3 Einträgen wäre das also Zitat: ---------
Eintrag1 Eintrag2-----------< Center Eintrag3 -------- Bei 2 Aber Zitat: ---------
Eintrag1 ---------------------< Center Eintrag2 -------- Ich glaube, ich bin echt zu dumm dafür >_< |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Meinst du ungefähr sowas?
Code: [AUSKLAPPEN] Graphics 640, 480, 0, 2
SetBuffer BackBuffer() centerY = GraphicsHeight() / 2 menuH = 40 Repeat menuH = menuH + MouseZSpeed() Cls: Color 50, 50, 50 ;Horizontallinien For i = 5 To -5 Step -1 Rect 0, centerY - menuH * i, GraphicsWidth(), 1 Text 0, centerY - menuH * i - 16, i Next: Color 255, 0, 0: Rect 0, centerY, GraphicsWidth(), 1 Color 0, 255, 0 ;Kästchen For i = 1 To 8 For j = 1 To i Rect i * 80, centerY - (i * menuH) / 2 + (j - 1) * menuH, 60, menuH, 0 Text i * 80, centerY - (i * menuH) / 2 + (j - 1) * menuH, j Next Next Flip() Until KeyDown(1) End Wenn ja, ist es gar nicht so schwierig, man muss nur wissen, wo der oberste Eintrag beginnt: bei einem Menüpunkt, fängt er bei 0.5, bei 2 Menüpunkten bei 1: 1 -> 0.5 2 -> 1 3 -> 1.5 x -> x / 2 Alle Menüpunkte die unter dem obersten liegen lassen sich dann auch leicht berechnen: MenüpunktY = ObersterMenüpunktY + MenüpunktNummer * MenüpunktHöhe. Und dass die Nulllinie in der Mitte liegt, davon muss man sich nicht irritieren lassen. Man kann ihn auch nach ganz oben oder unten setzen (für sich), und durch eine einfache Addition verschieben. |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
- Zuletzt bearbeitet von SpionAtom am So, Feb 01, 2009 20:26, insgesamt 2-mal bearbeitet
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du halbierst die Höhe und arbeitst damit:
Code: [AUSKLAPPEN] Graphics 800,600,0,2
SetBuffer FrontBuffer() Origin 400,300 Local X%,Anzahl%,HalbeHoehe# For X=0 To 30 For Anzahl=0 To X HalbeHoehe=X/2.0 Plot X*10,(Anzahl*10)-(HalbeHoehe*10) Next Next WaitKey End Edit1: Zu spät... |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ah... Danke hectic und Spion, ihr habt mir wirklich weitergeholfen. Das ist genau das, was ich gesucht habe. ![]() Nja, jetzt wo ich es sehe, kommt mir das alles so einfach vor. nja wie auch immer. Damit ist dieses Thema wohl erledigt. |
||
Twitter
Download Jewel Snake! Windows|Android |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group