mit schleife verändern

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Rotes_Eichhörnchen

Betreff: mit schleife verändern

BeitragDo, Jan 26, 2006 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

also:

ich hab d a sowas:


Code: [AUSKLAPPEN]

text x, y "" + frage1$

;dann a bisserl code

und dann

if "klick" then


ich will, dass wenn ich klicke, dass dann oben beim text nicht mehr +frage1$, sondern +frage2$, und so weiter, also einfach immer eine zahl pluss nehmen.

Frage: kann ich das mit einer schleife machen?

also kann ich also den namen: frage1$ aufsplitten, in sowas wie: "namen" + zahl$ + "$" ? wohl kaum oder?

gibt es eine andere möglichkeit?
 

totonak5

BeitragDo, Jan 26, 2006 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
das würd ich in einem feld machen also so:

Code: [AUSKLAPPEN]

dim frage$(10)

repeat

text x,y,frage$(nr)

;bisserl code....

if mousehit(1) then nr = nr + 1

forever

Just for Fun!
Jesus loves U!

Rotes_Eichhörnchen

BeitragDo, Jan 26, 2006 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
also hab ich das richtgi verstanden?:

Code: [AUSKLAPPEN]
Dim fragen$(10)
Dim antworten$(10)
zaehler% = 0

filein% = ReadFile("Bibliothek\" + ueberschrift$ + "\" + zeile1$)

While Not Eof(filein)
   fragen(zaehler) = ReadLine(filein)
   antworten(zaehler) = ReadLine(filein)
   zaehler = zaehler + 1
Wend

CloseFile filein


für das "aus der datei lesen"

und für das "auf dem Bildschirm wiedergeben" :

Code: [AUSKLAPPEN]
Dim frage$(10)

Repeat
SetFont fragec
Text 110,340,fragen(zaehler)



Color 0, 0, 0
 CreateInput(110,533)


If X>=394 And X<=630And y>=39 And y<=275 Then
If MouseDown(2) Then
kleineloesung$=1


EndIf
EndIf

DrawImage loesung, 394, 39

If kleineloesung$=1 Then
SetFont fontb
antworten(zaehler) 150,580, "Die Antwort lautet: "

If X>=331 And X<=408And y>=211 And y<=246 Then
If MouseDown(2) Then
kleineloesung$=0

EndIf
EndIf



EndIf


Forever


aber.. das geht irgendwie nicht... sobald ich mit der maus klicke, dass er jetzt die erst ezeile lesen soll, und sie in text wiedergeben soll, hängt sich das programm auf... bitte sagt mir meien Fehler!
 

BlitzBasic303

Betreff: RE:

BeitragDo, Jan 26, 2006 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich häts so gemacht:
Code: [AUSKLAPPEN]

Graphics 800,600,32,1
setbuffer backbuffer()

Frage1$="Wer ist schlau? "
Frage2$="Wer bin ich? "
Und so weiter...

fragenr=1

while not keyhit(1)
if fragenr=1 Then Text 10,10,frage1$
if fragenr=2 Then Text 10,10,frage2$
Und so weiter...


if frage1richtig=True Then fragenr=2
Und so weiter...


flip
wend
end


Kann sein das das primitiv ist, aber es klappt...[/syntax]

Rotes_Eichhörnchen

BeitragDo, Jan 26, 2006 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm...aber das basiert darauf, dass die Fragen und Antworten extern eingegeben werden können, bzw. mittels einem anderen programm...

skey-z

BeitragDo, Jan 26, 2006 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
@bb303, sehr flexibel deine Variante, kannst ja mal deinen Code auf 100 Frage anwenden.

Also entweder mit dem Array " Dim frage$(nr)", wenn die anzeahl der Antworten bekannt ist, wenn du sie, wie ich schon gesehen habe, aus einer datei liest, ist es besser Types zu nehmen, dann brauchst du nicht immer manuell die anzahl der Fragen eingeben und du kannst auch direkt die richtige antwort mitspeichern.

Ein gutes Tutorial dazu findest du auf
http://www.blitzbase.de/tutorials/shadow_1.htm(ausführlich)
http://www.blitzbase.de/tutorials/shadow_2.htm(kompakt)
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Rotes_Eichhörnchen

BeitragDo, Jan 26, 2006 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
das verstehe ich nicht... ich werde mir das dann in den Ferien oder am Wochenende durchlesen... kann mir bis dahin jemand nur sagen, was ich da für Fehler drinnen habe?

preachie

BeitragDo, Jan 26, 2006 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, aber ich bin noch nicht ganz durchgestiegen, was Du mit Deinem Code genau erreichen willst (auf was soll geklickt werden und was soll dann passieren?), aber eine Unschönheit ist mir aufgefallen, bei der es mich eh wundert, dass der Compiler nicht schon meckert.

Und zwar definierst Du

Code: [AUSKLAPPEN]
kleineloesung$=1


Das heißt, die Variable kleineloesung erwartet einen String, Du weist ihr aber eine Zahl zu.

Also entweder:
Code: [AUSKLAPPEN]
kleineloesung%=1

oder
Code: [AUSKLAPPEN]
kleineloesung$="1"


Ansonsten beschreibe doch vielleicht nochmal genau, wie Dein Programm ablaufen soll...

Gruß
Preachie

Rotes_Eichhörnchen

BeitragDo, Jan 26, 2006 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
1. ich hab im kompletten programm das so deklariert, ... ist das nicht gut?

2.

Also folgendes... mein Programm macht:

1. Du kannst zwischen 4 Bibliotheken wählen (das sind einfach Ordner), in denen sich (in der ersten version) bis zu 11 txt-docs befinden. Die docs sind so aufgebaut: Zeile1: Frage, Zeile2: Antwort, Zeile3: Frage, Zeile4: Antwort, ... pro datei sollen bis zu (in der ersten version) 50 Fragen und 50 Antworten möglich sein. (100 zeilen).

Das Programm hat die 4 Bibliotheken gespeichert, die mit der Maus anklickbar sind. Daraufhin öffnet sich ein Menü, indem (in der ersten version) 11 dateien angezeigt werden. Wenni ch auf eine klicke, erscheint in der Mitte des Bildschirmes die Frage. Darunter, kann ich die Antwort eingeben, und wenn ich auf lösung klicke, dann wird darunter die richtige Lösung ausgegeben. (kleineloesung) so.

Ich hab bis jetzt alles geschafft zu proggen, aber jetzt stecke ich an der Text-Ausgabe, bzw. Text aus txt-file lesen.

Ich wollte das mit readline machen, aber habe hier gehört, dass das mit Dim viel besser gehen sollte. ... nunja...ich weiß nicht, wie ich damit umgehen soll... und hab gerade nicht die zeit /die motivation, mir das komplette tutorial durchzulesen.

Also währe ich dankbar, wenn ihr mir den Code, mit dem ich aus dem dokument zeile für zeile lese, und anschliesend in 2 Variablen packe.

Und den Code, der mir die Frage ausgibt, wenn ich auf "lösung" klicke, die antwort, und wenn ich auf "Weiter" klicke, soll die nächste Frage kommen.
Danke schon mal im Voraus.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jan 27, 2006 3:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Eingeschalteter Debuger hätte dir die Stelle zeigen müßen die Fehlerhaft ist... Würde mal auf folgendes tipen.

Aus:Code: [AUSKLAPPEN]
If X>=394 And X<=630And y>=39 And y<=275 Then
lieberCode: [AUSKLAPPEN]
If X>=394 And X<=630 And y>=39 And y<=275 Then
oderCode: [AUSKLAPPEN]
If RectsOverlap(x,y,1,1,394,39,236,236) Then

Genauso dann auch mitCode: [AUSKLAPPEN]
If X>=331 And X<=408And y>=211 And y<=246 Then

[EDIT] Eventuell kann noch ein Fehler in der Dimensionierung deiner Dim sein. Wenn mehr Textinhalte in ein Dim geladen werden, als das Dim Kapazität hat, dann kommt auch ein Fehler.

Rotes_Eichhörnchen

BeitragFr, Jan 27, 2006 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
verstehe ich jetzt nicht ganz..aber egal...

kann ich den 2 codes haben?


ich will aus einer datei.txt zeile für zeile rauslesen, und dann die erste zeile in die variable: frage$, und die die erste antwort in: antwort$ abspeichern.

Dann soll nachdem ich einen button gedrückt habe, die nächsten beiden Zeilen rausgelesen werden.

Im zweiten Teil wird einfach immer die aktuelle Frage, und die aktuelle antwort in einem text x, y wiedergegeben.

Schafft das wer?
 

Dreamora

BeitragFr, Jan 27, 2006 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Davon würde ich abraten, dass er erst liest, wenn die Taste gedrückt wird. Du könntest doch einfach alle Fragen und Antworten vorab einlesen. Das hat dann nämlich den Vorteil, dass du danach die Reihenfolge der Fragen frei verändern kannst.


Vorgehen:

1. Datei öffnen
2. Einmal komplett durchgehen, damit du weisst, wieviele Einträge in der Datei sind.
3. Arrays mit entsprechender Grösse anlegen
4. Datei nocheinmal einlesen und die Einträge in die entsprechenden Arrays packen
5. Datei schliessen

Nun kannst du mit den Fragen - Antworten machen, wozu du gerade Lust hast Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Rotes_Eichhörnchen

BeitragFr, Jan 27, 2006 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Datei öffnen:

Code: [AUSKLAPPEN]
datei=ReadFile("Bibliothek\" + ueberschrift$ + "\" + zeile2$)


richtig?

Einma komplett durchgehen, damit ich weiß, wieviele Fragen und antworten drinnen sind:

Code: [AUSKLAPPEN]
 keine ahnung


Arrays mit entsprechender Grösse anlegen:

Code: [AUSKLAPPEN]
keine ahnung (zu beachten: erste zeile frage, zweite zeile antwort)


Datei nocheinmal einlesen und die Einträge in die entsprechenden Arrays packen:



Code: [AUSKLAPPEN]
villeicht:
while not EOF(datei)
readline
... oder so


Datei schliessen :


Code: [AUSKLAPPEN]
CloseFiledatei


bitte dort, wo ich mich ned auskennen, helfen!!

Hubsi

BeitragFr, Jan 27, 2006 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Komplett durchgehen mit While Not Eof() und eine Zählvariable mit laufen lassen (n=n+1 als Beispiel genannt). Das Array redimensionieren mit einem nochmaligen ql:Dim Very Happy Und fertig ist die Laube Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Rotes_Eichhörnchen

BeitragFr, Jan 27, 2006 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
kann mir wer

1. Datei öffnen
2. Einmal komplett durchgehen, damit du weisst, wieviele Einträge in der Datei sind.
3. Arrays mit entsprechender Grösse anlegen
4. Datei nocheinmal einlesen und die Einträge in die entsprechenden Arrays packen
5. Datei schliessen

das auscoden?

5k41

BeitragFr, Jan 27, 2006 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
mach selsbt^^
ihc geb dir nen ansatz:
Code: [AUSKLAPPEN]

lesen=readfile("datei.txt")
repeat
arraygroeße=arraygroeße+1
until EoF(lesen);weiss nicht ob der befehl so benutzt wird kannst ja mal schnell gucken!

nun nur noch array erstelen und alles reinlesen...

PS:Ich schreibe aus protest wegen der Formulierung nicht mehr...
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

Dreamora

BeitragFr, Jan 27, 2006 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Rotes_Eichhörnchen hat Folgendes geschrieben:
kann mir wer

1. Datei öffnen
2. Einmal komplett durchgehen, damit du weisst, wieviele Einträge in der Datei sind.
3. Arrays mit entsprechender Grösse anlegen
4. Datei nocheinmal einlesen und die Einträge in die entsprechenden Arrays packen
5. Datei schliessen

das auscoden?


Nein eigentlich nicht.
Programmieren ist sehr viel learning by doing also wirst du es wohl erst versuchen müssen. Bei Fehlern und Problemen helfen wir dir dann gerne wieder.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BtbN

BeitragFr, Jan 27, 2006 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ansatzweise:
1. ReadFile
2. ReadLine
3. Dim
4. SeekFile -> ReadLine >> Dim
5. CloeFile

Rotes_Eichhörnchen

BeitragFr, Jan 27, 2006 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
war heute 2 h im Forum, und knapp vor nem Selbstmord^^


alle haben das gleiche gesagt, wie ihr... naja...dass sie mir keinen code geben, u. so...

und die haben versucht mir das zu erklären, echt lieb von denen (2 h!!) aber nunja,... ich hab das nicht gerissen...

aber naja, ich hab gemeint, dass ich gern mal so nen code sehen will, da ich es dann verstehen würde, aber sie haben nein gesagt...

naja... dann werd ich halt nicht drum herum kommen...

______________________________________________________________

also fange ich mal an:

Das habe ich, um einmal im Ordner die dateien.txt anzuzeigen:



Code: [AUSKLAPPEN]
Verz=ReadDir("Bibliothek\" + ueberschrift$ + "\")

   Datei$=NextFile$(Verz)
 
   Datei$=NextFile$(Verz)
 
   Datei$=NextFile$(Verz)
   zeile1$="" + Datei$
   Datei$=NextFile$(Verz)
   zeile2$="" + Datei$
   Datei$=NextFile$(Verz)
   zeile3$="" + Datei$
   Datei$=NextFile$(Verz)
   zeile4$="" + Datei$
   Datei$=NextFile$(Verz)
   zeile5$="" + Datei$
   Datei$=NextFile$(Verz)
   zeile6$="" + Datei$
   Datei$=NextFile$(Verz)
   zeile7$="" + Datei$
   Datei$=NextFile$(Verz)
   zeile8$="" + Datei$
   Datei$=NextFile$(Verz)
   zeile9$="" + Datei$
   Datei$=NextFile$(Verz)
   zeile10$="" + Datei$
   Datei$=NextFile$(Verz)
   zeile11$="" + Datei$


CloseDir Verz


funzt super!

dann kommt:
Code: [AUSKLAPPEN]

filein = ReadFile("Bibliothek\" + ueberschrift$ + "\" + zeile1$)

While Not Eof(filein)
 
frage$ = ReadLine(filein)

  i% = i% + 1
Wend

CloseFile filein


das habe ich, um zu ermitteln, wie viele Zeilen denn das File hat (i%)

jetzt muss ich nur noch die zeilen in die Variabeln einpacken:

Code: [AUSKLAPPEN]
Dim Feld(i%, 2)

filein = ReadFile("Bibliothek\" + ueberschrift$ + "\" + zeile1$)

i% = 0

While Not Eof(filein)
 
frage$ = ReadLine(filein)
Feld(i%, 1) = frage$
  antwort$ = ReadLine(filein)
Feld(i%, 2) = antwort$
  i% = i% + 1
Wend
CloseFile filein



auch geschafft.

Wenn ich das jetzt eingebe, dann wird richtig! die erste Frage, u. die erste Antwort ausgegeben. Jetzt brauch ich nur noch etwas, mit dem ich per Mausklick, auf die nächste Frage weiterschalten kann.

(Mausklick ist falsch ausgedrückt... ich mach das so: if weiter$=1, then geh eine Frage weiter... nur das: "geh eine Frage weiter", habe ich noch ned...

PS: großen dank die beiden leute im Chat, die sicher wissen, dass sie gemeint sind... und sry, dass ich zeitweise ausgerastet bin^^
 

Dreamora

BeitragFr, Jan 27, 2006 21:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist simpel:
Du brauchst eine Variable, die sich merkt welche Frage das gerade aktuell ist. Wenn dann "weiter = 1" ist, musst du einfach die Variable um 1 erhöhen Smile

Also eigentlich genau so wie du beim Einlesen Frage um Frage eingelesen hast Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group