BlackBoard » Design, Programmierung & Entwicklung » Programmieren » VB - Frage Hintergrund Musik / zufallsauswahl » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Hintergrund Musik / zufallsauswahl
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
garush
Aufsteiger


Dabei seit: 29.03.2003
Beiträge: 38

Fragezeichen Hintergrund Musik / zufallsauswahl       Zum Anfang der Seite springen

Hy Leutz,
grad fängt das neue Jahr an und schon brauch ich eure Hilfe.
Wie kann ich mit Visual Basic 6 hintergrundmusik in ein Formular einfügen?
Und wie erkläre ich meinem VB das es ein zufälliges formular auswählen soll?Für ein Quiz, es soll ja net immer wieder gleich anfangen!!!!!

thx im vorraus
GaRush


[EDIT]

Ich hab jetzt einen Button eingefügt, der soll beim draufklicken einen Nummer generieren und dann das form mit der nummer öffnen. Ich weiß aber net wie das geht.

So sieht das aus:
code:
1:
2:
3:
4:
Private Sub startgame_Click()
x = Int((Rnd * 2) + 1)
fragex.Show
End Sub


[/EDIT]

__________________
[removed]

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von garush: 03.01.2004 17:59.

03.01.2004 14:14 garush ist offline E-Mail an garush senden Beiträge von garush suchen
Medusa Medusa ist männlich
Senior Member


images/avatars/avatar-252.gif

Dabei seit: 10.09.2001
Beiträge: 356
Herkunft: ...von da, wo mein Haus wohnt...

RE: Hintergrund Musik / zufallsauswahl       Zum Anfang der Seite springen

Zitat:
code:
1:
2:
3:
4:
Private Sub startgame_Click()
x = Int((Rnd * 2) + 1)
fragex.Show
End Sub


du solltest, wenn du mit rnd arbeitest, den Zufallsgenerator zuvor initialisieren, mit der Funktion Randomize.

Wenn du zu jeder Frage ein seperates Formular erstellst, dann wird das sehr unübersichtlich. Und wenn du mal im Design was ändern willst, dann müsstest du das auf jedem Formular ändern. Wenn dein Quiz 100 Fragen hat, dauert das ne weile Augenzwinkern .

Wenn du es trotzdem so lösen willst, dann musst du mit Index arbeiten. Du gibst jedem Formular einen Index und den selben Namen. Dem ersten Form gibst du den Index 1, dem zweiten den Index 2, und dem dritten 3. Wenn du dann in x deine Zufallszahl (in deinem Beispiel zwischen 1 und 3) hast, rufst du das Fenster so auf:
code:
1:
frage(x).show


Zum Thema Hintergrundmusik sag ich später was, müsst ich auch erst nachschauen, weiß ich jetzt net, wie man das machen kann.


Ich würde das mit dem zufälligen Auswählen der Fragen anders lösen. Ich würde in einem Array alle Fragen und Antworten speichern (könntest du ja aus ner Datei auslesen lassen). Ich würde dann nur 1 Form verwenden, und dort die Frage in nem Label oder so anzeigen lassen. Die Labelaufschrift wird dann zufällig aus dem Array geholt. Und die zugehörigen Antworten und so natürlich auch..

__________________
Grüßle, Medi

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Medusa: 03.01.2004 18:26.

03.01.2004 18:18 Medusa ist offline E-Mail an Medusa senden Beiträge von Medusa suchen
CDW CDW ist männlich
eine Simulation


Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread

      Zum Anfang der Seite springen

zum sound:
dazu gibts ne ganz nette winapi:
BOOL PlaySound(
LPCSTR pszSound,
HMODULE hmod,
DWORD fdwSound
);

also z.b:
PlaySound("sound1.wav",NULL,SND_FILENAME +SND_LOOP+ SND_ASYNC
)

oder VB intern(found by google Augen rollen ):
code:
1:
2:
3:
4:
5:
6:
7:
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

Private Sub Form_Load()
  ' Spielt Multimedia-Dateien ab ( WAV, MIDI, AVI )
  Call mciExecute("Play C:\WINDOWS\MEDIA\DING.WAV")
03.01.2004 18:49 CDW ist offline E-Mail an CDW senden Homepage von CDW Beiträge von CDW suchen
garush
Aufsteiger


Dabei seit: 29.03.2003
Beiträge: 38

Themenstarter Thema begonnen von garush
      Zum Anfang der Seite springen

@medusa:
Wie mach ich das denn wenn alle fragen in einer Textdatei gespeichert werden sollen? Je frage 4 Antworten.

@CDW:
funzet net.
Muss ich doch im start form rein ne?
bei mir sieht das so aus :
code:
1:
2:
3:
4:
Private Sub Form_Load()
  ' Spielt Multimedia-Dateien ab ( WAV, MIDI, AVI )
  Call mciExecute("Play C:\WINDOWS\MEDIA\DING.WAV")
End Sub


Was soll die Zeile

Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

muss die unbedingt mit rein?

__________________
[removed]

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von garush: 03.01.2004 19:00.

03.01.2004 18:56 garush ist offline E-Mail an garush senden Beiträge von garush suchen
CDW CDW ist männlich
eine Simulation


Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread

      Zum Anfang der Seite springen

@garush: soweit ich mich noch an VBS erinnern kann smile
ja, die Zeile ist wichtig. Und den Pfad solltest du natürlich anpassen...
und zwar kannst du wenn die WAV Datei (ich glaub, mp3 gehen auch, muss mal nachschauen) im Programmordner liegt einfach "musik1.wav" schreiben und wenn du die Musik im Unterordner ablegen willst "\Musik\musikdatei.wav"
aber wart lieber bis Medusa dir antwortet, er beherrscht diese Sprache (im Gegensatz zu mir Augenzwinkern )
03.01.2004 19:06 CDW ist offline E-Mail an CDW senden Homepage von CDW Beiträge von CDW suchen
garush
Aufsteiger


Dabei seit: 29.03.2003
Beiträge: 38

Themenstarter Thema begonnen von garush
      Zum Anfang der Seite springen

ich habs geschaft einen wert zwischen 1 und 49 in einem fenster auszugeben.
code:
1:
2:
3:
    Randomize
    Wert1 = Int((49 * Rnd) + 1)   ' Ganze Zufallszahl im Bereich von 1 bis 49 erzeugen.
    MsgBox Wert1

Wie übertrage ich das jetzt auf ein Formular?
Wenn ich das so mache geht das net:
code:
1:
2:
3:
    Randomize
    Wert1 = Int((49 * Rnd) + 1)   ' Ganze Zufallszahl im Bereich von 1 bis 49 erzeugen.
    frage(Wert1).Show


__________________
[removed]
03.01.2004 19:09 garush ist offline E-Mail an garush senden Beiträge von garush suchen
Medusa Medusa ist männlich
Senior Member


images/avatars/avatar-252.gif

Dabei seit: 10.09.2001
Beiträge: 356
Herkunft: ...von da, wo mein Haus wohnt...

      Zum Anfang der Seite springen

Zitat:
Original von garush
Wenn ich das so mache geht das net:
code:
1:
2:
3:
    Randomize
    Wert1 = Int((49 * Rnd) + 1)   ' Ganze Zufallszahl im Bereich von 1 bis 49 erzeugen.
    frage(Wert1).Show

Das Formular "frage" mit dem Index Wert1 muss auch existieren.
Du musst also 49 Formulare erstellen, die den Namen "frage" haben und jedes einen Index. Bei 49 siehst du vielleicht schon, warum das umständlich ist.


Vorschlag:
Erstell einfach ein Form mit dem Namen "frmFrage"
und darauf ein Label mit dem Namen "lblFrage".
"frage" ist hier jetzt nicht das Formular, sondern ein Array, indem die Fragen stehen !!
In der Sub Form_load() schreibst du dann:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
dim frage(1 to 49) as string
frage(1)="Hier die Frage Nr. 1"
frage(2)="Hier die Frage Nr. 2"
frage(3)="..."

Randomize
Wert = int((48*rnd)+1)
frmFrage.lblFrage.caption=frage(Wert)
frmFrage.show

Willst du meherer Antwortmöglichkeiten geben, von denen eine richtig ist, oder wie hast du dir das vorgestellt?
Wenn du das so machen willst, dann musst halt noch die Antwort-Arrays füllen, und wieder eins davon (zufällig) in ein Label schreiben. in einem weiteren Array kannst ja dann z.b. ne Zahl schreiben, welches von den Antworten die richtige ist. Dann musst du aber das Array außerhalb der Sub erstellen (ich mein den Dim-Befehl), damit du auch von anderen Subs aus darauf zugreifen kannst.





Du könntest die Fragen, Antworten, etc auch aus ner Datei auslesen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
dim frage() as string
dim antwort1() as string
dim antwort2() as string
dim antwort3() as string
dim antwort4() as string
dim correct() as integer

open "blabla.txt" for input as #1
    do until eof(1)
        i=i+1
        line input #1, frage(i)
        line input #1, antwort1(i)
        line input #1, antwort2(i)
        line input #1, antwort3(i)
        line input #1, antwort4(i)
        line input #1, correct(i)
    loop
close #1
Das wär jetzt eine Frage und vier Antwortmöglichkeiten.
In der ersten Zeile der Datei steht die Frage, in der 2.-5. die vier Antwortmöglichkeiten, und in der 6. steht die Zahl der richtigen Antwort. Danach gehts in der 7. Zeile mit der zweiten Frage weiter.





Wahrscheinlich hast du dann 4 Buttons (a,b,c,d). musst halt dann mit dem Array correct() prüfen, ob die Antwort richtig ist. Hier kannst auch wieder den 4 Buttons den selben Namen geben, und jedem ein Index. (von 1 bis 4)
code:
1:
2:
3:
4:
Sub button_click(index as integer)
if correct(wert) = index then msgbox "richtig :D"

end sub
die Variable "wert" ist die Zufallszahl, die generiert wurde. Die musst du auch außerhalb der Subs definieren, damit sie z.b. in dieser sub (button_click) gültig ist.




btw:
Zitat:
code:
1:
2:
    Randomize
    Wert1 = Int((49 * Rnd) + 1)   ' Ganze Zufallszahl im Bereich von 1 bis 49 erzeugen.
Diese Zeile liefert einen Wert zwischen 1 und 50 (beide Zahlen eingeschlossen), denn 49*rnd --> Zahl zwischen 0 und 49, das ganze + 1 --> Zahl zwischen 1 und 50.






Hintergrundmusik:

Zitat:
Was soll die Zeile

Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

muss die unbedingt mit rein?
Ja, dass muss sie. Mit dieser Zeile deklarierst du die Funktion mciExecute. Das ist eine externe Funktion in der winmm.dll. Da es diese Funktion in VB nicht direkt gibt, muss du so eine externe Funktion in einer dll verwenden. Wichtig ist, dass diese Zeile außerhalb einer Sub steht.
Mit dieser Mathode wird der Sound aber nicht in Schleife gespielt, was bei Hintergrundmusik net so gut ist. Deshalb würde ich es mit der Funktion PlaySound machen, wie CDW sagte:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" _
 (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) _
 As Long
 
Private Const SND_ASYNC As Long = &h1
Private Const SND_LOOP As Long = &h8
Private Const SND_FILENAME As Long = &h20000

Private Sub Form_load()
PlaySound "C:\windows\media\ding.wav", 0, snd_async + snd_filename + snd_loop

End Sub


__________________
Grüßle, Medi

Dieser Beitrag wurde 6 mal editiert, zum letzten Mal von Medusa: 04.01.2004 14:40.

04.01.2004 14:03 Medusa ist offline E-Mail an Medusa senden Beiträge von Medusa suchen
garush
Aufsteiger


Dabei seit: 29.03.2003
Beiträge: 38

Themenstarter Thema begonnen von garush
      Zum Anfang der Seite springen

Danke Medusa!!! Respekt


Nur eine Frage hab ich noch ( Mauer )

Wie muss denn dann die Datei mit der frage aussehen?
frage;antwort1;antwort2;antwort3;antwort4;correct;
2frage;2antwort1;2antwort2;2antwort3;2antwort4;2correct;

oder wie????
Baby

__________________
[removed]

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von garush: 04.01.2004 14:35.

04.01.2004 14:35 garush ist offline E-Mail an garush senden Beiträge von garush suchen
Medusa Medusa ist männlich
Senior Member


images/avatars/avatar-252.gif

Dabei seit: 10.09.2001
Beiträge: 356
Herkunft: ...von da, wo mein Haus wohnt...

      Zum Anfang der Seite springen

Zitat:
Original von Medusa
In der ersten Zeile der Datei steht die Frage, in der 2.-5. die vier Antwortmöglichkeiten, und in der 6. steht die Zahl der richtigen Antwort. Danach gehts in der 7. Zeile mit der zweiten Frage weiter.


Augenzwinkern


Ich brauch immer ne halbe Stunde, bis mein Beitrag nachm 20. mal editieren endlich fertig ist. Aber so lass ich ihn jetzt. Wenn mir noch was einfällt, schreib ich n neuen großes Grinsen

__________________
Grüßle, Medi

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Medusa: 04.01.2004 14:43.

04.01.2004 14:42 Medusa ist offline E-Mail an Medusa senden Beiträge von Medusa suchen
Gast-Nr. X
Neuling

Dabei seit: 15.12.2003
Beiträge: 5

      Zum Anfang der Seite springen

delete

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Gast-Nr. X: 10.01.2004 03:17.

10.01.2004 03:15 Gast-Nr. X ist offline Beiträge von Gast-Nr. X suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » VB - Frage Hintergrund Musik / zufallsauswahl

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH