Attribut änderung will und will nicht funktionieren

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Xeres

Moderator

BeitragSa, Jul 05, 2008 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
@Noobfire:
Das Codestück da zeugt davon, das du noch keine grundsätzlichen Mechanismen beim programmieren verinnerlicht hast. Die bekommst du schneller, wenn du dir selber Gedanken machst und ausprobierst wie etwas funktioniert.
Code: [AUSKLAPPEN]
WriteString Spielerconfig, "Spielername$"
Schreibt den String "Spielername$", nicht die Variable Spielername$.
Code: [AUSKLAPPEN]
WriteByte Spielerconfig, attr(0) = 20
attr(0) = 20 ist eine Zuweisung, die hat da nichts verloren.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Noobfire

BeitragSa, Jul 05, 2008 23:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

WriteByte Spielerconfig, attr(0) = 20

attr(0) = 20 ist eine Zuweisung, die hat da nichts verloren.

Was ist jetzt Zuweisung? Das soll so sein, dass in dem File die Statistiken und Attribute gespeichert werden. attr(0) = 20 ist doch dann meines Wissens nach richtig? Und was genau muss ich eigentlich schreiben? WriteByte WriteInt oder was?

@ozzi pff dann hats sich eben jetzt ausgekekst Razz XD
Ich probiers jetzt am Ende mit CloseFile..

EDIT: Ach ja, und wenn ich WriteFile mache, was muss ich dann eingeben, um eine Spielername$.ini zu haben? Wenn ich WriteFile (Spielername$.ini) schreibe meckert er, bei (Spielername$".ini") auch...

EDIT2: Ah, jetzt klappst wenn ich Close File mache. Es wird Spielername$ dahin geschrieben (also nat was ich da eingegeben hatte) aber das attr(0) = 20 nicht.

ozzi789

BeitragSo, Jul 06, 2008 0:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Writefile ("Spielername$.ini")
So isses richtig doch es ist ein lokaler Pfad , also wird es im Ordner erstellt in dem deine BB datei ist.


WriteFile ("c:\Spielername$.ini")
Machs so um es direkt auf C: zu speichern.


Closefile => https://www.blitzforum.de/help/CloseFile
Da hats ein Beispiel.


Probiers mal mit Writeline => https://www.blitzforum.de/help/WriteLine




WriteByte Spielerconfig, attr(0) = 20
Was wilst du damit machen ?
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

bruce85

BeitragSo, Jul 06, 2008 0:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Noobfire hat Folgendes geschrieben:

Was ist jetzt Zuweisung?


Beispiel:
attr(0) = 20 ;Das ist eine Zuweisung, du übergibst attr(0) den Wert 20
if attr(0) = 20 then .... ;Das ist ein Vergleichsoperator, wenn attr(0) = 20 ist, dann ist diese bedingung wahr

Ich hab dein Code mal erweitert um die Attributen zu speichern und wieder zu Laden:
Code: [AUSKLAPPEN]
Graphics 800,600

Dim attr(7)

attr(0) = 20
attr(1) = 20
attr(2) = 5
attr(3) = 5
attr(5) = 5
attr(6) = 5
attr(7) = 5

;Globale Variablen, falls diese später in Funktionen verwendet werden
Global Level=0
Global EP=0
Global Punkte=20
Global Spielername$ = "Spielername"
LoadConfig(Spielername$) ;Funktion aufrufen um die Config zu laden

Repeat
  Locate 150,0
  Write "Dein Name:" Print Spielername$ Locate 500,0 Write "Dein Level:" Print Level
  Print "---------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
  Write "Deine Lebenspunkte:" Locate 300,35 Print attr1
  Write "Dein Mana:" Locate 300,53 Print attr(1)
  Write "Deine Stärke:" Locate 300,71 Print attr(2)
  Write "Deine Intelligenz:" Locate 300,89 Print attr(3)
  Write "Deine Geschicklichkeit:" Locate 300,107 Print attr(5)
  Write "Deine Verteidigung:" Locate 300,125 Print attr(6)
  Write "Dein Glück:" Locate 300,143 Print attr(7)
  Print "-----------------------------------------------------------------------------------"
  Write "Zur Aufwertung verfügte Punkte:" Locate 300, 179 Print Punkte
  Print ""
  Write "Erfahrung" Locate 300,215 Print EP
  Print "Was möchtest du aufwerten?"
  Aufwertung$ = Input("Du kann Lebenspunkte (L), Mana (M), Stärke (S), Intelligenz (L), Geschicklichkeit (Ge), Verteidigung (V) oder Glück (Gl) aufwerten")
  If Aufwertung$ = "L" Then
    attr(1) = attr(1) + 1 : Punkte = Punkte - 1
    SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
  ElseIf Aufwertung$ = "M" Then
    attr(2) = attr(2) + 1 : Punkte = Punkte - 1
    SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
  Else
    Print "Du musst L, M, S, L, Ge, V oder Gl eintippen!"
    WaitKey
  EndIf
  Cls
Until Punkte = 0

End

;Funktion um die Config Datei zu speichern
Function SaveConfig(IniDatei$)
  Datei = WriteFile(IniDatei$+".ini")

  For i=0 To 7
    If Not i = 4 Then ;Arays speichern bis auf die Array nr 4
      WriteByte Datei,attr(i)
    EndIf
  Next
  CloseFile(Datei)
End Function

;Funktion um die Config Datei zu laden
Function LoadConfig(IniDatei$)
  Datei = ReadFile(IniDatei$+".ini")

  If Not Datei = 0 Then
    For i=0 To 7
      If Not i = 4 Then ;Arays laden bis auf die Array nr 4
        attr(i) = ReadByte(Datei)
      EndIf
    Next
    CloseFile(Datei)
  EndIf
End Function


WriteByte kann nur werte zwischen 0 und 255 aufnehmen, wenn der Wert überschritten wird, fängt es wieder ab 0 an.
Wenn es grössere Zahlen sind wie z.B. 256.... dann würde ich Integer(Ganzzahlen) nehmen: WriteInt.

Ich hoffe das ist was du brauchst, wenn ich micht nicht täusche Very Happy

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

ozzi789

BeitragSo, Jul 06, 2008 10:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich da meinen Senf dazu geben darf Wink


1. Kein Print

2. Kein Input , alternativ könnte man Buttons machen ^^



Also so im Sinne von :

Code: [AUSKLAPPEN]

If MouseX() > 200 and MouseX()< 100 and MouseY() > 200 and MouseY() < 100 and Mousehit(1)
Attribut verändern
endif
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

Noobfire

BeitragSo, Jul 06, 2008 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah vielen Dank.
Hat (also wird) mir sehr helfen.
@ozzi789 Wieso kein Print? Meinste Text 230, 250 anstatt Locate 230,250 Print ?
An Buttons hatte ich auch schon gedacht, danke für den Code, ich wollte es aber erstmal mit dem configfile hinbekommen.

Allgemeine Frage.. Wieso benutzt man eigentlich dim? Macht das einen Unterschied, wenn man anstatt attr(0) einfach attr0 macht???

The Shark

BeitragSo, Jul 06, 2008 12:43
Antworten mit Zitat
Benutzer-Profile anzeigen
natürlich:

attr0 ist eine variable
mit attr(0) sprichst du das erste element in einem arrayfeld <- dim an
 

Noobfire

BeitragSo, Jul 06, 2008 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich hab jetzt mal ausprobiert. Wenn ich einfach CopyPaste deinen Code in meinen gemacht hatte, kam bei Writebyte Array Index of Bounds? Keine Ahnung wieso da bei attr(i) steht? Also hab ich kurzerhand einfach attr(0) attr(1) usw... geschrieben also so:
Code: [AUSKLAPPEN]

;Funktion um die Config Datei zu speichern
Function SaveConfig(IniDatei$)
  Datei = WriteFile(IniDatei$+".ini")

  For i=0 To 7
    WriteByte Datei,attr(0)
   WriteByte Datei,attr(1)
   WriteByte Datei,attr(2)
   WriteByte Datei,attr(3)
   WriteByte Datei,attr(4)
   WriteByte Datei,attr(5)
   WriteByte Datei,attr(6)
    Next
  CloseFile(Datei)
End Function

Das Problem mit dem fehlenden attr(4) habe ich auch gelöst. Jetzt gibt es nur noch 6 Attribute.

Ich hab das jetzt ein paar Mal gemacht. Kam kein Fehler mehr. Aber bei gerade mal einer ini hat es perfekt geklappt.
Code: [AUSKLAPPEN]

22
20
5
5
5
5
0

Das stand dadrin.
Jetzt kommt der Inhalt anderer ini´s:
Code: [AUSKLAPPEN]

ß|| |

Code: [AUSKLAPPEN]

ᐜԅԅᰀԔԅᐜԅԅᰀԔԅᐜԅԅᰀԔԅᐜԅԅᰀԔԅ

Code: [AUSKLAPPEN]

ᐚԅԅᨀԔԅᐚԅԅᨀԔԅᐚԅԅᨀԔԅᐚԅԅᨀԔԅ

Code: [AUSKLAPPEN]

       


Was geht denn hier ab? Ich habe keine Änderungen sonst am Quelltext vorgenommen!

The Shark

BeitragSo, Jul 06, 2008 13:05
Antworten mit Zitat
Benutzer-Profile anzeigen
ist dir klar wofür eine for-schleife da ist?

Dieser Teil
Code: [AUSKLAPPEN]
For i=0 To 7
    WriteByte Datei,attr(0)
   WriteByte Datei,attr(1)
   WriteByte Datei,attr(2)
   WriteByte Datei,attr(3)
   WriteByte Datei,attr(4)
   WriteByte Datei,attr(5)
   WriteByte Datei,attr(6)
Next

schreibt 8 mal diene attribute in die datei

es muss
Code: [AUSKLAPPEN]
for i=0 to 6
    writebyte Datei,attr(i)
next

heißen.

Die fragezeichen usw kommen davon, dass du einzelne bytes inb die datei reinschreibst, die der Texteditor dann versuchtr als zeichen zu interpretieren.
 

Noobfire

BeitragSo, Jul 06, 2008 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
ah klar. Es lag an dem For i to 7 dings da
Natürlich muss es jetzt For 6 heißen, da ich ja ein Attribut weggenommen habe...
 

bruce85

BeitragSo, Jul 06, 2008 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Du meinst du hast 7 attributen, da es von 0 anfängt, wieso lässt du die Schleife dann 8 mal wiederholen?

Mach es einfach so:
Code: [AUSKLAPPEN]
;Funktion um die Config Datei zu speichern
Function SaveConfig(IniDatei$)
  Datei = WriteFile(IniDatei$+".ini")

  For i=0 To 6
    WriteByte Datei,attr(i)
  Next
  CloseFile(Datei)
End Function


MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

Noobfire

BeitragSo, Jul 06, 2008 13:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja genaus so hatt ichs ja auch jetzt gemacht Wink Danke nochmal für den Code Very Happy
 

Noobfire

BeitragMo, Jul 07, 2008 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
AAlso, jetzt habe ich ein neues Problem Neutral

Ich habe das jetzt alles mit Buttons gemacht:
Code: [AUSKLAPPEN]

Function lvlup()
   .start
   Repeat
      WaitTimer (Timer2)
      Cls
      DrawImage abc, 350, 35
      DrawImage abc, 350, 53
      DrawImage abc, 350, 71
      DrawImage abc, 350, 89
      DrawImage abc, 350, 107
      DrawImage abc, 350, 125
      DrawImage abc, 350, 143
   
      Locate 150,0 Print "Dein Name:" Locate 235,0 Print Spielername$ Locate 500,0 Print "Dein Level:" Locate 580,0 Print Level
      Print "---------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
      Write "Deine Lebenspunkte:" Locate 300,35 Print attr(0)
      Write "Dein Mana:" Locate 300,53 Print attr(1)
      Write "Deine Stärke:" Locate 300,71 Print attr(2)
      Write "Deine Intelligenz:" Locate 300,89 Print attr(3)
      Write "Deine Geschicklichkeit:" Locate 300,107 Print attr(4)
      Write "Deine Verteidigung:" Locate 300,125 Print attr(5)
      Write "Dein Glück:" Locate 300,143 Print attr(6)
      Print "-----------------------------------------------------------------------------------"
      Write "Zur Aufwertung verfügte Punkte:" Locate 300,179 Print Punkte
      Print ""
      Write "Erfahrung" Locate 300,215 Print EP
      Print "Was möchtest du aufwerten?"
      Print "Du kannst deine Lebenspunkte, dein Mana, deine Stärke, deine Intelligenz,
      Print "deine Geschicklichkeit, deine Verteidigung oder dein Glück aufwerten."
      Print "Klicke dazu auf die Buttons hinter den Attributen!"
      
      
      
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 35 And MouseY() < 53 And MouseHit(1) Then ;Definition des - Buttons
         attr(0) = attr(0) - 2 ;Lebenspunkte - 2
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf
         
      If MouseX () > 370 And MouseX () < 388 And MouseY () > 35 And MouseY () < 53 And MouseHit(1) Then ;Definition des + Buttons
         attr(0) = attr(0) + 2 ;Lebenspunkte + 2
         Punkte = Punkte - 1 ;Die möglichen Punkte - 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf
         
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 53 And MouseY() < 71 And MouseHit(1) Then ;Definition des - Buttons
         attr(1) = attr(1) - 3 ;Mana - 3
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf   
         
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 71 And MouseY() < 89 And MouseHit(1) Then ;Definition des - Buttons
         attr(2) = attr(2) - 1 ;Stärke - 1
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf   
         
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 89 And MouseY() < 107 And MouseHit(1) Then ;Definition des - Buttons
         attr(3) = attr(3) - 1 ;Intelligenz - 1
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf   
         
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 107 And MouseY() < 125 And MouseHit(1) Then ;Definition des - Buttons
         attr(4) = attr(4) - 1 ;Geschicklichkeit - 1
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf   
         
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 125 And MouseY() < 143 And MouseHit(1) Then ;Definition des - Buttons
         attr(5) = attr(5) - 1 ;Verteidigung - 1
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf   
         
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 143 And MouseY() < 161 And MouseHit(1) Then ;Definition des - Buttons
         attr(6) = attr(6) - 1 ;Glück - 1
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf   
         
      
      
      Flip 1
   Until Punkte = 0
   
   weiter$ = Input ("Möchtest du noch etwas veränder? Sage [Ja], wenn du es willst!")
   
   If weiter$ = "Ja" Then
      Goto start
   EndIf
End Function


EDIT: Das abc Bild sind die Buttons!

Das ganze mit dem If blablabla Endif If blablabla Endif ist nur so n Müll, weil ich erst gedacht hatte, dass mein folgendes Problem an dem ElseIf liege. Ach ja, ich war bis jetzt zu faul, auch den + Button bei jedem Attribut zu machen!

Also habe jetzt 3 Probleme:
1. Wenn ich auf den ersten Minus Button drücke, verändert sich der Wert attr(0) zwar, aber bei allen anderen Buttons geht dies nicht. Ich kann soviel draufdrücken, wie ich will, aber es funktioniert nicht.
Was mich besonders wunderlich macht, ist, dass alle Codes genau das gleiche enthalten. Nur ein Minus wurde mal mit einem Plus vertauscht, oder attr(0) mit attr(1). Außerdem musste ich natürlich die Button Definiton (also da, wo man klicken muss) ändern. Aber es will nicht funktionieren!!!

2. Ich kann mit dem ersten, und einzigen Button das Attr(0) bis unter 0 verringern. Müsste man hier noch noch zum Definitons If ein "and attr(0) > 0" einfügen?

3. Am Ende wird gefragt, ob man noch etwas verändern will... Wenn ich aber schreibe:
Code: [AUSKLAPPEN]

If weiter$ = "Ja" Then
      Goto start
   ElseIf weiter$ = "Nein" Then
End Function
        Else
   Print "Sage [Ja], oder [Nein] !
   EndIf
End Function

Dann meckert das Programm, dass es ja schon bei Elseif ein End Function habe, und dann sei die Funktion ja schon zu Ende. Dann macht er das Else nicht.

EDIT2: uuuuuups, schon wieder Doppelpost. Aber ich hatte ja ein neues Problem.. Geht das dann??

Eingeproggt

BeitragMo, Jul 07, 2008 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu Problem Nr. 1: Speichere MouseHit(1) in einer Variable und werte diese aus. Also
Code: [AUSKLAPPEN]
mhit=MouseHit(1)
If blablabla And mhit Then


Zu Problem Nr. 3: Wenn du eine Function beenden willst bevor man bei "End Function" ist, verwende Return

Und Problem Nr. 2 löst sich vlt so von selbst... War jetzt zu faul mir das nochmal anzuschauen.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Noobfire

BeitragMo, Jul 07, 2008 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habs jetzt so, aber jetzt geht gar nix mehr:
Code: [AUSKLAPPEN]

Function lvlup()
   .start
   Repeat
      WaitTimer (Timer2)
      Cls
      DrawImage abc, 350, 35
      DrawImage abc, 350, 53
      DrawImage abc, 350, 71
      DrawImage abc, 350, 89
      DrawImage abc, 350, 107
      DrawImage abc, 350, 125
      DrawImage abc, 350, 143
   
      Locate 150,0 Print "Dein Name:" Locate 235,0 Print Spielername$ Locate 500,0 Print "Dein Level:" Locate 580,0 Print Level
      Print "---------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
      Write "Deine Lebenspunkte:" Locate 300,35 Print attr(0)
      Write "Dein Mana:" Locate 300,53 Print attr(1)
      Write "Deine Stärke:" Locate 300,71 Print attr(2)
      Write "Deine Intelligenz:" Locate 300,89 Print attr(3)
      Write "Deine Geschicklichkeit:" Locate 300,107 Print attr(4)
      Write "Deine Verteidigung:" Locate 300,125 Print attr(5)
      Write "Dein Glück:" Locate 300,143 Print attr(6)
      Print "-----------------------------------------------------------------------------------"
      Write "Zur Aufwertung verfügte Punkte:" Locate 300,179 Print Punkte
      Print ""
      Write "Erfahrung" Locate 300,215 Print EP
      Print "Was möchtest du aufwerten?"
      Print "Du kannst deine Lebenspunkte, dein Mana, deine Stärke, deine Intelligenz,
      Print "deine Geschicklichkeit, deine Verteidigung oder dein Glück aufwerten."
      Print "Klicke dazu auf die Buttons hinter den Attributen!"
      
      
      
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 35 And MouseY() < 53 And mhit = 1 And attr(0) > 0 Then ;Definition des - Buttons
         attr(0) = attr(0) - 2 ;Lebenspunkte - 2
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf
         
      If MouseX () > 370 And MouseX () < 388 And MouseY () > 35 And MouseY () < 53 And mhit = 1 Then ;Definition des + Buttons
         attr(0) = attr(0) + 2 ;Lebenspunkte + 2
         Punkte = Punkte - 1 ;Die möglichen Punkte - 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf
         
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 53 And MouseY() < 71 And mhit = 1 And attr(1) > 0 Then ;Definition des - Buttons
         attr(1) = attr(1) - 3 ;Mana - 3
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf   
         
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 71 And MouseY() < 89 And mhit = 1 And attr(2) > 0 Then ;Definition des - Buttons
         attr(2) = attr(2) - 1 ;Stärke - 1
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf   
         
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 89 And MouseY() < 107 And mhit = 1 And attr(3) > 0 Then ;Definition des - Buttons
         attr(3) = attr(3) - 1 ;Intelligenz - 1
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf   
         
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 107 And MouseY() < 125 And mhit = 1 And attr(4) > 0 Then ;Definition des - Buttons
         attr(4) = attr(4) - 1 ;Geschicklichkeit - 1
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf   
         
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 125 And MouseY() < 143 And mhit = 1 And attr(5) > 0 Then ;Definition des - Buttons
         attr(5) = attr(5) - 1 ;Verteidigung - 1
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf   
         
      If MouseX() > 350 And MouseX()< 368 And MouseY() > 143 And MouseY() < 161 And mhit = 1 And attr(6) > 0 Then ;Definition des - Buttons
         attr(6) = attr(6) - 1 ;Glück - 1
         Punkte = Punkte + 1 ;Die möglichen Punkte + 1
         SaveConfig(Spielername$) ;Funktion aufrufen und den Spielername mit geben
      EndIf   
         
      
      
      Flip 1
   Until Punkte = 0
   .weiter
   weiter$ = Input ("Möchtest du noch etwas verändern? Sage [Ja], wenn du es willst. Sage [Nein], wenn du zufrieden bist.")
   
   If weiter$ = "Ja" Then
      Goto start
   ElseIf weiter$ = "Nein" Then
      Return
   Else
      Print "Du musst entweder [Ja] oder [Nein] sagen!"
      WaitKey
      Goto weiter
   EndIf
End Function


Vorher habe ich
Code: [AUSKLAPPEN]

Global mhit = MouseHit(1)

Eingeproggt

BeitragMo, Jul 07, 2008 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
mhit = MouseHit(1)


Na das muss schon in die Schleife rein Very Happy
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Noobfire

BeitragMo, Jul 07, 2008 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Sry für die späte Antwort hatte PES gezockt ^^

Aber... DANKE!! Jetzt klappst... Komisch wieso das erst jetzt geht???
n bissel sehr komisch finde ich!
man ist jetzt Computer: Aha ich soll überprüfen ob die linke Maustaste gedrückt ist.. nee das kapier ich net...
aha mhit ist gleich linke Maustaste gedrückt... Aha ich soll überprüfen ob mhit gleich eins ist.. was ist denn mhit aha es ist linke maustaste dann kapier ich natülich alles.
:confused:

Blitzprogger

BeitragDi, Jul 08, 2008 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst wissen dass eine schleife dutzende male pro sekunde durchgeführt wird. und immer wenn du schreibst Code: [AUSKLAPPEN]
If Mousehit(1)
dann prüft er ob in genau diesem moment die linke maustaste gedrückt wurde. du müsstest also viele male drücken um genau dann deine maus zu drücken wenn das auch abgefragt wird. desshalb schreibst du Code: [AUSKLAPPEN]
mhit = Mousehit(1)
gilt das dann eben für die ganze schleife.

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink
 

Noobfire

BeitragFr, Jul 11, 2008 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
So, hab jetzt in nem anderen Menü ein Problem mit mhit:
Code: [AUSKLAPPEN]

Repeat
   WaitTimer(Timer)
   Cls
   mhit = MouseHit(1)
   
   DrawImage MainImage,0,0
   
   If MouseX() > 616 And MouseX() < 796 And MouseY() > 515 And MouseY() < 615 Then
      DrawImage Exit_over,616,515 
      
      
      
   ElseIf MouseX() > 616 And MouseX() < 796 And MouseY() > 515 And MouseY() < 615 And mhit = 1 Then
      End
      
   ElseIf MouseX() > 33 And MouseX() < 353 And MouseY() > 116 And MouseY() < 176 Then
      DrawImage NeuesSpiel_over,33,116
      
      
      
   ElseIf MouseX() > 33 And MouseX() < 353 And MouseY() > 116 And MouseY() < 176 And mhit = 1 Then
      neuesspiel = 1
      
   EndIf
   
   Flip 1
Until neuesspiel = 1

Immer wenn ich auf Neues Spiel oder auf Ende klicke, passiert nix. Auch nicht wenn ich MouseDown oder so eintippe.


EDIT: SRY, hat sich erledigt. Man muss anscheinend immer Endif schreiben...

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group