Maus Anzeige Probleme
Übersicht

chineseboyBetreff: Maus Anzeige Probleme |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: ;Taschenrechner
Graphics 640,480,16,2 SetBuffer BackBuffer () Cls Repeat HidePointer Ueberschrift$("Willkommen!",0) Ueberschrift$("Bitte wählen sie ihre Funktion",15) Programmauswahl$(" 1 - für Addition",45) Programmauswahl$(" 2 - für Subtraktion",60) Programmauswahl$(" 3 - für Multiplikation",75) Programmauswahl$(" 4 - für Division",90) Programmauswahl$(" 5 - Um das Programm zu beenden",105) Locate 0,150 maus Auswahl=Input() Select Auswahl Case 1 Addition Case 2 Subtraktion Case 3 Multiplikation Case 4 Division Case 5 End Default Print "Falsche Auswahl" Cls End Select Until Auswahl = 5 Function Maus() Repeat Maus=LoadImage ("Maus.bmp") x=MouseX() y=MouseY() CLS DrawImage Maus,x,y Flip Until KeyDown(1)=1 End Function Function Ueberschrift$(Text$,hoehe) Text 320,hoehe,Text,1,0 End Function Function Programmauswahl$(Text$,hoehe) Text 0,hoehe,Text,0,0 End Function Function Addition() Print "Addition" Zahl1=Input("Geben Sie die 1. Zahl ein: ") Zahl2=Input("Geben Sie die 2. Zahl ein: ") Zahl3=Zahl1+Zahl2 Print Zahl3 WaitKey Cls End Function Function Subtraktion() Print "Subtraktion" Zahl1=Input("Geben Sie die 1. Zahl ein: ") Zahl2=Input("Geben Sie die 2. Zahl ein: ") Zahl3=Zahl1-Zahl2 Print Zahl3 WaitKey Cls End Function Function Multiplikation() Print "Multiplikation" Zahl1=Input("Geben Sie die 1. Zahl ein: ") Zahl2=Input("Geben Sie die 2. Zahl ein: ") Zahl3=Zahl1*Zahl2 Print Zahl3 WaitKey Cls End Function Function Division() Print "Division" Zahl1=Input("Geben Sie die 1. Zahl ein: ") Zahl2=Input("Geben Sie die 2. Zahl ein: ") Zahl3=Zahl1/Zahl2 Print Zahl3 WaitKey Cls End Function Halli Hallo und liebe grüße. Bin neu hier im Board und hoffe auf Hilfe von Experten So sieht mein Programm aus! Irgendwie kriege ich das programm nicht so hin wie es sollte. Ist die Struktur schon kommplett falsch? Sobald ich CLS befehl einfügen kriege ich das problem das bei mir der text verschwindet. wenn ichs nicht mache dann kommen zu viele mäuse zu stande. außerdem hab ich noch das problem sobald ich es in vollbildmodus einschalte ist bei mir ein Teil des bildschirms abgeschnitten |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
in deinem Programm ist leider keine erkennnbare Struktur. Hast du schon einmal mein Programm-Ablauf-Tutorial gelesen?
https://www.blitzforum.de/foru...607#355607 Dort erfährst du viel über eine Struktur, die dir Functionen ermöglicht und den Bildschirm immer stabil aufgebaut lässt. |
||
- Zuletzt bearbeitet von Midimaster am Do, Feb 04, 2010 8:58, insgesamt einmal bearbeitet
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
wo soll ich anfangen print und locate solltest du nicht verwenden, verwende stattdessen "text" die befehle sind veraltet und dienen höchstens debugzwecken hidepointer gehört auf keinen fall in eine schleife, es reicht wenn du es einmal - VOR repeat - machst gleiches gilt für Loadimage - das ist allerdings noch viel wichtiger, da du sonst deinen gesamten grafikram vollhaust mit deinem bild von einer maus... du lädst nämlich in jedem durchlauf ein neues bild dazu. das kostet zeit, ist unnötig und haut wie gesagt den ram voll cls solltest du (der übersicht halber) an den anfang der schleife setzen statt flip solltest du flip 0 verwenden und einen timer (benutze die suche dazu) damit dein programm nicht ganz windows okkupiert grundsätzlich sind funktionen gut, aber wenn sie nur eine sache erledigen - meide sie. dein eigentliches problem rührt jedoch daher, dass du 2 verschiedene schleifen hast eine am anfang und eine in der funktion maus() sobald du maus() aufrufst bist du also in einer 2. schleife und kommst nicht mehr zurück zu deinem ursprünglichen programm. deswegen siehst du auch nichts mehr ovn deinem ursprünglichen programm.. das cls wie auhc das flip gehören in die hauptschleife, also die obere schleife. die 2. schleife in der funktion maus () brauchst du nicht - bzw sie zerstört dein programm im übrigen wäre es sinnvoll, wenn du deinen code einrücken würdest, sprich tabulator oder space verwenden um gedankenblöcke sichtbar zu machen viel erfolg beim debuggen |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Noch etwas benütze die Code Tags und schreibe den Code nicht als Zitat ![]() Code: [AUSKLAPPEN] [code]Print "Test"[/code]
|
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du es möchtest, biete ich dir an, den Code gemeinsam mit Dir so zu verändern, bis er ein prof. Aussehen hat. Dabei schreibe ich dir regelmäßig irgndwelche Tipps und erkläre sie und auch warum das so besser ist. Und du passt dann den Code an und fragst bitte nach, wenn du etwas nicht verstehst. Du würdest allerhand lernen dabei... | ||
chineseboy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] ;Taschenrechner
Graphics 640,480,16,2 SetBuffer BackBuffer () HidePointer Global Zahl1,Zahl2,Zahl3,Auswahl Repeat Cls Ueberschrift$("Willkommen!",0) Ueberschrift$("Bitte wählen sie ihre Funktion",15) Programmauswahl$(" 1 - für Addition",45) Programmauswahl$(" 2 - für Subtraktion",60) Programmauswahl$(" 3 - für Multiplikation",75) Programmauswahl$(" 4 - für Division",90) Programmauswahl$(" 5 - Um das Programm zu beenden",105) Locate 0,150 Auswahl=Input() Select Auswahl Case 1 Addition Case 2 Subtraktion Case 3 Multiplikation Case 4 Division Case 5 End Default Print "Falsche Auswahl" Cls End Select Until Auswahl = 5 End Function Ueberschrift$(Text$,hoehe) Text 320,hoehe,Text,1,0 End Function Function Programmauswahl$(Text$,hoehe) Text 0,hoehe,Text,0,0 End Function Function Addition() Print "Addition" Zahl1=Input("Geben Sie die 1. Zahl ein: ") Zahl2=Input("Geben Sie die 2. Zahl ein: ") Zahl3=Zahl1+Zahl2 Print Zahl3 WaitKey Cls End Function Function Subtraktion() Print "Subtraktion" Zahl1=Input("Geben Sie die 1. Zahl ein: ") Zahl2=Input("Geben Sie die 2. Zahl ein: ") Zahl3=Zahl1-Zahl2 Print Zahl3 WaitKey Cls End Function Function Multiplikation() Print "Multiplikation" Zahl1=Input("Geben Sie die 1. Zahl ein: ") Zahl2=Input("Geben Sie die 2. Zahl ein: ") Zahl3=Zahl1*Zahl2 Print Zahl3 WaitKey Cls End Function Function Division() Print "Division" Zahl1=Input("Geben Sie die 1. Zahl ein: ") Zahl2=Input("Geben Sie die 2. Zahl ein: ") Zahl3=Zahl1/Zahl2 Print Zahl3 WaitKey Cls End Function Ja midimaster ich würde sehr gerne deine hilfe annehmen.! Ansicht ist die Struktur doch jetzt Korrekt!?!? ???? nur hab ich immer noch keine idee die maus funktion einzubinden! |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
So sieht es doch gleich besser aus.
1. Lade ein Bild nicht in einer Schleife, das ist unnsinnig, setz das Loadimage vor die Schleife 2. Benütze nicht Input, denn Input hält dein Programm an, du kannst also währenddessen nichts mit der Maus machen o.ä 3. Setz CLS nur einmal, beim Anfang der Hauptschleife und bei Code: [AUSKLAPPEN] Default Print "Falsche Auswahl" WaitKey : Cls ;habe hier noch ein Waitkey eingebaut, sonst sieht man die "Fehlermeldung nie" 4. Benutze Flip ![]() 5. Zieh Text ![]() Noch eine Frage, was willst du mit der Maus machen? Im windowed modus ist die Maus sichtbar (wenn du das Hidepointer lässt) Naja solange du Input verwendest wirst du keine Buttons o.ä benützen können Hier mal der Code, jedoch ohne Mausfunktion (ich lade sie nur um zu zeigen wo das stehn müsste) Code: [AUSKLAPPEN] ;Taschenrechner
Graphics 640,480,32,1 SetBuffer BackBuffer () HidePointer Global Zahl1,Zahl2,Zahl3,Auswahl,Maus,x,y Maus=LoadImage("Maus.bmp") Repeat Cls Ueberschrift$("Willkommen!",0) Ueberschrift$("Bitte wählen sie ihre Funktion",15) Programmauswahl$(" 1 - für Addition",45) Programmauswahl$(" 2 - für Subtraktion",60) Programmauswahl$(" 3 - für Multiplikation",75) Programmauswahl$(" 4 - für Division",90) Programmauswahl$(" 5 - Um das Programm zu beenden",105) Flip Locate 0,150 Auswahl=Input() Select Auswahl Case 1 Addition Case 2 Subtraktion Case 3 Multiplikation Case 4 Division Case 5 End Default Print "Falsche Auswahl" WaitKey : Cls End Select Until Auswahl = 5 End Function Ueberschrift$(Text$,hoehe) Text 320,hoehe,Text,1,0 End Function Function Programmauswahl$(Text$,hoehe) Text 0,hoehe,Text,0,0 End Function Function Addition() Print "Addition" Zahl1=Input("Geben Sie die 1. Zahl ein: ") Zahl2=Input("Geben Sie die 2. Zahl ein: ") Zahl3=Zahl1+Zahl2 Print Zahl3 WaitKey End Function Function Subtraktion() Print "Subtraktion" Zahl1=Input("Geben Sie die 1. Zahl ein: ") Zahl2=Input("Geben Sie die 2. Zahl ein: ") Zahl3=Zahl1-Zahl2 Print Zahl3 WaitKey End Function Function Multiplikation() Print "Multiplikation" Zahl1=Input("Geben Sie die 1. Zahl ein: ") Zahl2=Input("Geben Sie die 2. Zahl ein: ") Zahl3=Zahl1*Zahl2 Print Zahl3 WaitKey End Function Function Division() Print "Division" Zahl1=Input("Geben Sie die 1. Zahl ein: ") Zahl2=Input("Geben Sie die 2. Zahl ein: ") Zahl3=Zahl1/Zahl2 Print Zahl3 WaitKey End Function mfg ozzi ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also die Hauptschleife Repeat/Until ist eigentlich nur dazu da, dass das Programm sie 60x pro Sekunde durchläuft. In ihr stehen alle Unterfunktionen die daher ebenfalls 60x pro Sekunde aufgerufen werden.
Im Grunde sieht deine Hauptschleife nicht schlecht aus. Sie beginnt normalerweise mit einem CLS und endet mit einem FLIP. Innerhalb dieser Main-Schleife werden Maus und Tastatur abgefragt und dann entsprechend ein Bildschirm neu gezeichnet. Bei den Tastatur-Abfragen hakt es in deinem Programm. Die Unterfunktionen machen bei dir eigene Repeat/Until-Schleifen auf oder halten das komplette Programm an. So kann der User nicht mehr frei mit der Maus agieren. Was du brauchst, sind also Tastaturabfragen, die weiterhin eine Maus zulassen. Mein Tipp: Frage die Maus und die Tastatur zwar ab, aber reagiere damit ein Flag zu setzen. Ein Flag ist einfach irgendeine Variable, die sich merkt, was der User gerade getan hat. Du hast sowas schon mit deinem Auswahl benutzt. Dann kehre sofort in die Hauptschleife zurück und male im Malteil entsprechend dem Ergebnis des Flags einen abweichenden Bildaufbau. BlitzBasic: [AUSKLAPPEN] Repeat was genau soll denn der user mit der Maus machen können? Hier noch einen Tipp zu deinen 5 Funktionen. Im Grunde steht ja 5x das gleiche da. Wieso nicht 1 Funktion, die alle 5 Eventualitäten abdeckt und dabei auch noch völlig losgelöst ist von der Eingabe der beiden Zahlen: BlitzBasic: [AUSKLAPPEN] Function Berechne() Und hier eine Routine, um jeweils abhängig von Nr% eine der beiden Zahlen vom User zu erhalten. BlitzBasic: [AUSKLAPPEN] Function ZahlEingeben(Nr%) Das ist schon die Voraussetzung, um das ganze später viel lockerer durch Maus oder Buttons umzusetzen. |
||
- Zuletzt bearbeitet von Midimaster am Do, Feb 04, 2010 21:01, insgesamt einmal bearbeitet
![]() |
jokerman29 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hier ist was zu deinem input problem:
https://www.blitzforum.de/foru...hp?p=10337 eine sehr gute inputroutine von Triton, die hält dein programm nicht an und erfüllt den gleichen zweck ![]() mfg jokerman29 |
||
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!
Rechtschreibfehler sind special-effekts meiner Tastatur ![]() |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group