Überschreibt nicht

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Svolf

Betreff: Überschreibt nicht

BeitragFr, März 17, 2006 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,..
Kann mir vielleicht einer sagen warum mein Script nicht funktioniert?
Er macht schon Punkte + 1 aber es blinkt nur und dann ist wieder die 0 da,...kann mir vielleicht jemand sagen an was das liegt?

Code: [AUSKLAPPEN]
Repeat

Cls

DrawImage Planetb, -195,-150

Color 0,255,0
Text 285,10, "Punkte"

Color 255,0,0

Line 90,400,90,500
Line 90,400,510,400

Line 510,400,510,500
Line 60,200,60,250
Line 60,250,550,250
Line 550,250,550,200
Line 550,200,60,200

Line 260,30,360,30
Line 360,30,360,60
Line 360,60,260,60
Line 260,60,260,30

Punkte=0

Color 0,255,0
Text 80,220 ,"Was ist ein Isotop?"
Text 100,420, "a: Ein Haus"
Text 100,450, "c: Ein Schrank"
Text 320,420, "b: Ein Tisch"
Text 320,450, "d: Ein Stuhl"

x=GetKey()
 If x = 97 Then
   Punkte = Punkte + 1
ElseIf x = 98 Then
   Punkte = Punkte + 0
ElseIf x = 99 Then
   Punkte = Punkte + 0
ElseIf x = 100 Then
   Punkte = Punkte + 0
EndIf

Locate 100,100
Print Punkte



Flip
Until KeyHit(1)
EndIf
EndIf

Flip
Until KeyHit(1)
End
 

Dreamora

BeitragFr, März 17, 2006 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist das Punkte = 0 das du innerhalb der Repeat hast anstatt davor Wink
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Svolf

BeitragFr, März 17, 2006 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke es funktioniert....!
 

Svolf

BeitragFr, März 17, 2006 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Svolf hat Folgendes geschrieben:
Danke es funktioniert....!


Kann mir jetzt bitte auch einer sagen, wie ich zu einer 2 Aufgaben kommen könnte,...also Gogo wär doch mist, wenn es so hieß

Zitat:
x=GetKey()
If x = 97 Then
Punkte = Punkte + 1
; Hier muss man doch eine Anweisung das er zur 2 Aufgabe geht. Muss doch auch ohne Goto gehen, weil mit Goto macht er gleich beide Aufgaben.
ElseIf x = 98 Then
Punkte = Punkte + 0
ElseIf x = 99 Then
Punkte = Punkte + 0
ElseIf x = 100 Then
Punkte = Punkte + 0
EndIf

5k41

BeitragFr, März 17, 2006 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
schreibsel die ne ql:Function !

mfg
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

ke^kx

BeitragFr, März 17, 2006 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
x=GetKey()

Select Aufgabe

 Case 1
 
  If x = 97 then
   
   Punkte = Punkte + 1
  End If

  ;Der Rest ist ja unnötig, da die Punkte ja gleich bleiben

 Case 2

  ;Hier die If Abfrage für die zweite Aufgabe

 Case 3

  ;Hier die If-Abfrage für die dritte Aufgabe

End Select


So, bitte versuch aber es zu verstehen und frag andernseits nochmal, denn man hat irgendwie so dass Gefühl, dass du vieles noch nciht so verstanden hast, WEIL du immer nur fragst wie denn der Code sei und selten selber überlegst...

Jiriki

[Edit]
Guck dir umbedingt nocheinmal RobsTutorial an!!!!
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

Svolf

BeitragFr, März 17, 2006 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hä,..und wie soll ich das machen mit eienr Funktion, wie soll das denn gehen

also if x = 97 then
Funktion test

und dann wo rufe ich sie ab?
Ich hab eehrlich gesagt kein Plan,..kann mir einer helfen vielleicht ein kleinen ausführlichen Script dafür schreiben?

Wäre echt nett´.
 

antome

!!! gesperrt !!!

BeitragFr, März 17, 2006 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Was soll das Script denn tun ?
Punkte bis 97 zusammenzählen und dann stoppen ?

Erklär es ein wenig ausführlicher, dann kann dir geholfen werden.
antome
 

ke^kx

BeitragFr, März 17, 2006 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Was sag ich: Guck dir Robs Tutorial an... Naja, wir haben wohl relativ gleichzeitig gepostet...

Aber mit meinr oben geposteten Lösung geht es auch, aber das ist wieder nciht deins! Hm, ich überleg gerade wie viel von dem Code du überhaupt selber geschrieben hast... Btw, in meinem Code ist noch ein kleiner Fehler, aber den kannst du selber korrigieren... Außerdem musst du noch das stellen der Fragen mit einbauen.

Jiriki

[Edit]
@antome:
Das ganze ist ein Quizspiel und x ist die Gedrückte Taste.

[Edit²]
Oh, du benutzt ja Text und Locate+Print in einem Code, da sieht man wieder, was du dir schon angeguckt hast... Confused
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

Svolf

BeitragFr, März 17, 2006 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
ehm eine Select Case Anwendung wollte ich schreiben, dass Problem ist doch wie wechsle ich zu Aufgabe ?

[code]x=GetKey()

Select Aufgabe

Case 1

If x = 97 then

Punkte = Punkte + 1
End If

;Der Rest ist ja unnötig, da die Punkte ja gleich bleiben

Case 2

;Hier die If Abfrage für die zweite Aufgabe

Case 3

;Hier die If-Abfrage für die dritte Aufgabe

End Select Zitat:


Wenn jetzt Case 1 ist wie komme ich zur 2 Aufgabe genau wie bei den anderen Case anweisungen ist doch genau das gleiche als würde ich if,..the,..else nehmen ich möchte doch die Punkte merken + zur 2 Aufgabe kommen.
Man könnte es auch so machen aber das wäre zu umständöich also:

x=GetKey()
If x = 97 Then
Punkte = Punkte + 1
Print "Was ist ein Haus"
Print "a bla"
Print "b ble"
if x = 97 then
Select Aufgabe
; Und dann würde wieder allles so weiter gehen.
Und bei den anderen Case Anwendungen doch auch geht es nicht anders,..?

Aufgaben.
ElseIf x = 98 Then
Punkte = Punkte + 0
ElseIf x = 99 Then
Punkte = Punkte + 0
ElseIf x = 100 Then
Punkte = Punkte + 0
EndIf
Zitat:
 

ke^kx

BeitragFr, März 17, 2006 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
OMFG!!! Evil or Very Mad

Das ist genau der kleine Fehler, den ich meinte... Nun überleg mal: Wenn die erste Aufgabe gelöst wurde, egal ob richtig oder Falsch, soll man zur zweiten Aufgabe kommen, das heißt im nächsten Schleifendurchlauf soll Aufgabe = 2 sein... Wenn du das jetzt in Code umsetzt (in meinen Code passt es ganz gut) dann weißt du wie es geht. Es ist eigentlich so einfach, dass ich wieder nur sagen kann: Guck dir Robs Tutorial an.

Und lern mall das umgehen mit den verschiednen Tags...

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

Svolf

BeitragFr, März 17, 2006 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Nochmal also ich möchte ein Quizspiel machen,.. und habe ein Menu.
Nun möchte ich mit hilfe von Getkey abfragen wenn das gedrückt ist dann mache das,..wie man ohne goto eien 2 Abfrage machen kann.
Zur zeit sieht mein Script so aus.

Zitat:

Graphics 640, 480, 16, 1
SetBuffer BackBuffer()

stars = LoadImage("Bilder\stars.bmp") ;
defiant = LoadImage("Bilder\cursor.bmp") ;

MaskImage defiant, 0, 0, 255

Color 255,0,0

FlushMouse
FlushKeys

Repeat

Cls

x_star = x_star + 1
If x_star = 201 Then x_star = 1

TileImage stars, x_star, 1
DrawImage defiant, MouseX(), MouseY()

fntArialI=LoadFont("Arial",32,False,True,False)
SetFont fntArialI
Color 148,128,228
Text 310,80, "Willkommen im Quizi!",True,False
FreeFont fntArialI

Color 255,0,0
Text 300,200, "Start"

Color 255,0,0
Text 295,250, "Credits"

Color 255,0,0
Text 305,300, "Ende"

If MouseHit(1) Then
If RectsOverlap(MouseX(),MouseY(),1,1,305,300,StringWidth("Ende"),StringHeight("Ende")) Then
Cls : End

ElseIf RectsOverlap(MouseX(),MouseY(),1,1,300,200,StringWidth("Start"),StringHeight("Start")) Then

Planetb=LoadImage("Bilder\Planetb.bmp")
MaskImage Planetb, 255,255,255

Color 255,0,0

Punkte=0



Cls

DrawImage Planetb, -195,-150

Color 0,255,0
Text 285,10, "Punkte"

Color 255,0,0

Line 90,400,90,500
Line 90,400,510,400

Line 510,400,510,500
Line 60,200,60,250
Line 60,250,550,250
Line 550,250,550,200
Line 550,200,60,200

Line 260,30,360,30
Line 360,30,360,60
Line 360,60,260,60
Line 260,60,260,30


Color 0,255,0
Text 80,220 ,"Was ist ein Isotop?"
Text 100,420, "a: Ein Haus"
Text 100,450, "c: Ein Schrank"
Text 320,420, "b: Ein Tisch"
Text 320,450, "d: Ein Stuhl"

x=GetKey()
If x = 97 Then
Punkte = Punkte + 1
Goto Frage2
ElseIf x = 98 Then
Punkte = Punkte + 0
Goto Frage2
ElseIf x = 99 Then
Punkte = Punkte + 0
Goto Frage2
ElseIf x = 100 Then
Punkte = Punkte + 0
Goto Frage2
EndIf


. Frage2


Color 0,255,0
Text 80,220 ,"dsfbdsmfnbdsnfbsm?"
Text 100,420, "a: Ein Haus"
Text 100,450, "c: Ein Schrank"
Text 320,420, "b: Ein Tisch"
Text 320,450, "d: Ein Stuhl"



Locate 345,40
Print Punkte

Flip

EndIf
EndIf

Flip
Until KeyHit(1)
End


Achja und noch zum anderen was hast du dagegen das ich write, text oder locate benutze?
Sorry das ich in Bb noob bin... Sad
 

Svolf

BeitragFr, März 17, 2006 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit deiner Case Schliefe ist doch das selbe als wenn ich if,..the,..else nehmen würde ich überlegt schon die ganze Zeit ich habe kein Plan wie ich zur 2 Aufgabe kommen könnte und zum anderen habe ich die tuts durch habe auch ein Buch.
Das bring aber mir in diesem Fall nicht sehr weit,..
 

antome

!!! gesperrt !!!

BeitragFr, März 17, 2006 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Dieser Thread gehört in "Beginner / Einsteiger"

2.
Jeder muss mal anfangen und ich finde es nicht schlimm wenn man am Anfang für schon geübte "Programmierer" dumme Fragen stellt .

Damit will ich nicht sagen das Fragen dumm sind, denn sie sind es grundsätzlich nicht. Manche können sich nur schwerer ausdrücken als andere.

3. Erklär mal was du genau tun willst.
Der oben gepostete Code funktioniert bei mir hinten und vorne nicht und ich möchte jetzt nicht raten was du gerne damit tun willst.

So wie ich bis jetzt erkennen kann willst du durch Abfrage eines Tastendruckes Punkte verteilen, aber Punkte= Punkte + 0 ist absolut sinnlos.

Erklär mal den Programmablauf und du bekommst ein Beispiel.

Edit: Ok mit 3. warst du grad schneller, um einen Beitrag zu schreiben braucht es etwas Zeit und 3. hat sich damit erledigt.
antome
 

Svolf

BeitragFr, März 17, 2006 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich möchte ein Quiz Spiel erstellen und mein Menu funktioniert mit einer Maus:



Zitat:

Graphics 640, 480, 16, 1
SetBuffer BackBuffer()

stars = LoadImage("Bilder\stars.bmp") ;
defiant = LoadImage("Bilder\cursor.bmp") ;

MaskImage defiant, 0, 0, 255

Color 255,0,0

FlushMouse
FlushKeys

Repeat

Cls

x_star = x_star + 1
If x_star = 201 Then x_star = 1

TileImage stars, x_star, 1
DrawImage defiant, MouseX(), MouseY()

fntArialI=LoadFont("Arial",32,False,True,False)
SetFont fntArialI
Color 148,128,228
Text 310,80, "Willkommen im Quizi!",True,False
FreeFont fntArialI

Color 255,0,0
Text 300,200, "Start"

Color 255,0,0
Text 295,250, "Credits"

Color 255,0,0
Text 305,300, "Ende"

If MouseHit(1) Then
If RectsOverlap(MouseX(),MouseY(),1,1,305,300,StringWidth("Ende"),StringHeight("Ende")) Then
Cls : End

ElseIf RectsOverlap(MouseX(),MouseY(),1,1,300,200,StringWidth("Start"),StringHeight("Start")) Then

Planetb=LoadImage("Bilder\Planetb.bmp")
MaskImage Planetb, 255,255,255

Color 255,0,0

Punkte=0



Cls

DrawImage Planetb, -195,-150

Color 0,255,0
Text 285,10, "Punkte"

Color 255,0,0

Line 90,400,90,500
Line 90,400,510,400

Line 510,400,510,500
Line 60,200,60,250
Line 60,250,550,250
Line 550,250,550,200
Line 550,200,60,200

Line 260,30,360,30
Line 360,30,360,60
Line 360,60,260,60
Line 260,60,260,30


Color 0,255,0
Text 80,220 ,"Was ist ein Isotop?"
Text 100,420, "a: Ein Haus"
Text 100,450, "c: Ein Schrank"
Text 320,420, "b: Ein Tisch"
Text 320,450, "d: Ein Stuhl"

Locate 345,40
Print Punkte

Flip

EndIf
EndIf

Flip
Until KeyHit(1)
End


Da wo ich die Linien Zeichne kommen die Antwortmöglichkeiten hinein und darüber die frage. Ich würde es gern so wollen, das sman mit der MAus eine Antwortmöglichkeit andrückt er sich merkt ob sie richtig ist dann Punkte gibt also Punkte = Punkte + 1,.wenn es aber falsch ist Punkte= Punkte +0 also kein Punkt und die setht dann oben im Score,. Zudem habe ich es nun mit getkey gemacht da ich keien AHnung hatte wie ich es mit der Maus machen sollte das er mir kein Courser anzeigte.
Und ich möchte nun wissen wie ich es machen kann das man was ausfählen kann und er sich dann merkt oh ist richtig gebe ihn Punkte geh dann zur 2 Aufgabe oder oh ist falsch gebe keine Punkte und geh auch zur 2 Aufgabe aber vergib keien Punkte.
 

ke^kx

BeitragFr, März 17, 2006 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Aaaalso:

Klar, du bist BB-Noob. Deshalb sollst du dir ja auch Robs Tutorial durchlesen! (Ich weiß nicht wie oft ich das jetzt shcon gesagt habe... ) Du findest es auf www.robsite.de unter (wer hätte das gedacht) Blitz Basic.

So, ich werde dir NICHT dein Code umschreiben, aber ich werde dir sagen, was du "falsch" machst:

Glieder deinen Code in ql:Function. Die eine ist z.B. Malen () und in ihr malst du alle Grafiken auf den Bildschirm. Und dann hast du die Hauptfunction Quiz (). In ihr werden die Fragen ausgegeben und überprüft, ob die Antwort richtig ist. Das ganze machst du so, dass du ersteinmal prüfst, welche Taste der User gedrückt hat. Dann testes du, bei welcher Frage du bist und dann testes du, ob die Anwort richtig ist. Wenn ja, gehst du zur nächsten Aufgabe. Das ganze in Pseudocode ist dann in etwa:

Code: [AUSKLAPPEN]

;Graphics Zeug
;Backbuffer laden
;Grafiken laden
;Musik laden
;...

Global Frage = 1
Global Punkte

Repeat

Until Keydown (1)

Malen ()
Quiz ()

End

;------------------------------------------------------------------------------------

Function Malen ()
 
 Cls

 ;die ganzen Bilder malen, Werte verändern...

 Flip

End Function

;------------------------------------------------------------------------------------

Function Quiz ()

 GedrückteTaste = GetKey

 Select Frage

  Case 1

   If GedrückteTaste = RichtigeAntwortFürFrageEins then

    Punkte = Punkte + 1
    Frage = Frage + 1
   
   ElseIf GedrückteTaste = FalschAntwortEins or GedrückteTaste = FalschAntwortZwei or GedrückteTaste = FalschAntwortdreu

    Frage = Frage + 1

   End If

 Case 2

  ;das selbe wie bei Frage 1, nur halt mit der richtigen Antwort für Frage 2

 Case 3

  ;...

 Case 4

 ...

End Select

End Function


So das musst du nur noch auf deinen Code übertragen und du hast dein Quizspiel. Wenn du etwas nicht verstanden hast, frag einfach nochmal wie oder warum ich das so geschrieben habe.

Wegen der Frage mit dem Select-Case oder If-ElseIf: Ich finde es einfach übersichtilicher und weniger zu schreiben, wenn man bei If Abfragen mit mehr als 2 Möglichkeiten Select-Case nimmt, muss man aber nciht.

Und noch ein Tipp: Rück deinen Code ein! Und noch einer: Guck dir Robs Tutorial an!

mfg
Jiriki

[Edit]
Und wenn du es mit der Maus machen möchtest ist es um einiges komplizierter, da hilft auch Robs Tutorial und die Befehle ql:MouseX und ql:MouseY
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

antome

!!! gesperrt !!!

BeitragFr, März 17, 2006 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ich mir jetzt auch die Mühe gemacht habe ein kleines Beispiel zu schreiben
poste ich es auch. Hat etwas gedauert da ein Telefonat dazwischen kam.

Code: [AUSKLAPPEN]
Global AufgabeIndex = 1


Repeat
   
    Select   AufgabeIndex
       
       Case 1 
            Aufgabe1()
       
       Case 2 
            Aufgabe2()
    End Select
   
Until AufgabeIndex = 0       

Function Aufgabe1()
   Print "1"
   Print "2"
   Print "3"   
   taste = Input("Gib eine Zahl ein ")   
   If taste = 3 Then AufgabeIndex = 2   
   If taste = 0 Then AufgabeIndex = 0
   
End Function

Function Aufgabe2()
   Print "4"
   Print "5"
   Print "6"       
   taste = Input("Gib eine Zahl ein ")
   If taste = 6 Then AufgabeIndex = 1   
   If taste = 0 Then AufgabeIndex = 0
End Function
antome
 

Svolf

BeitragFr, März 17, 2006 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, ich werd nur noch was in Delphi schreiben und wenn ich da fertig bin werd ich mein bb Script umschreiben. Hoffe ihr schaut hier ab und zu mal vorbei, wenn doch noch Fragen sind,..
Danke

d-bug

BeitragFr, März 17, 2006 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist wirklich ein Beginner Thread.

Darum:
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.

d-bug
 

Svolf

BeitragFr, März 17, 2006 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie einer ein großen Mund hat und somit das letzte Wort haben will.
Ich wird mal sagen dein Post passiert hier überhaupt nicht rein!!! Twisted Evil

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group