Problem bei Mechanik von "Gitarren Held"

Rockstady11

Mitglied
Hallo Leute,

ich versuche derzeit so etwas, also vom Spielprinzip her, wie Guitar Hero zu basteln, allerdings nur die Notenanzeige und deren Abfrage. Ich habe dabei aber Probleme und bitte hier um Hilfe.

Ich habe eine Form mit 8 PictureBoxen oben (n1 - n8) und diese sollen später dann mal nach einem bestimmten Muster herunterfahren und wenn sie unten in einer grauen PictureBox befinden, sollten sie gedrückt werden, dafür gibts Punkte, usw.

Die Tastaturabfrage funktioniert soweit und es erklingen auch Töne. Bis jetzt habe ich es so programmiert, wie ich es eben kann. Wenn es interessiert hier: http://www.file-upload.net/download-836221/Keyboard.zip.html

Ich möchte das ganze nun dynamischer und einfacher erweiterbar gestalten und deshalb brauch ich hier Hilfe.
Wie erstelle ich eine "Routine", die die Noten bis zum Ende "fahren" lässt und dort auch noch ansprechen lässt? Also vom Prinzip wüsste ich halt, wie es umständlich geht und zwar viele PictureBoxen erstellen und diese mit jeweils eigenen Koordinaten ausstatten und bei Bedarf nach unten wandern lassen.
Ich hatte auch schon eine Routine, die die Koordinaten übergeben hatte, dann waren sie aber nicht mehr ansprechbar, weil alle die gleichen Koordinaten hatten.
Hätte dann im Endeffekt gerne sowas wie "Call Notenverlauf (n1)" und dann wandert die nach unten usw.

Ich hoffe, ich konnte mein Problem hier verständlich darlegen und wäre über Hilfe SEHR dankbar! :)

MfG
Rockstady11
 
Hey,

ich kann dir jetzt nicht direkt etwas genaues sagen , aber ich kann dir deine Frage an sich beantworten.
Wenn ich das richtig verstanden habe, möchtes du vermeiden etlich viele Picture boxen zu erstellen und ihnen eigenschaften zuzuweisen.
Ich persönlich verwende dann Elementefelder, ich habe hier auch einen Threat erstellt, wo ich danach fragte, weil ich nichtmehr genau wusste wie das funktioniert.
Das prinzip ist simpel. Du erstellst sozusage einen Array, aber aus z.B. picture boxen. Diese kannst du dann so ansprechen :

picturebox1(4).top = 0

und statt der 4 setzt du eben die Picture box ein die du meinst.
Wenn du nicht verstanden hast wie ich das meine, ich schreib das gleich unten nochmal ausführlich ^^. Aber hier erstmal der Link zu meinem Threat :
klick

So :

Code:
' als erstes mal erstellst du eine Picture box.
' dann kopierst du sie und fügst sie wieder ein.
' VB fragt dich ob du ein Elementefeld erstellen willst
' Ja, dass willst du ;)
' dann kannst du noch ein paar einfügen, soviel wie du am Anfang brauchst
' keine Angst, du kannst während das Programm läuft immernoch welche hinzufügen
' so gehen wir davon aus, du hast 6 Picture boxen (so ne Gitarre hat 6 Saiten ne ?! ;) )
' dann würde ich, 6 Elemtefelder erstellen
' ich nehm in dem Beispiel mal nur die erste (Also eine der beiten E-saiten ;))
' das wäre dann Picturebox1(0)
' bzw. anstatt "0" die folgfenden zahlen 
' die ersetzen wir aber durch a (integer),  ist besser ;)
' am Anfang, ist a 0, also die erste PictureBox
' und jez kommt ein Beispiel wie du das Regeln könnts :

' hier hast du dann meinetwegen dein timer-event, der gukt ob die "Note" sozusagen unten
' angekommen ist

If Picturebox(a).top > 5000 then 
a = a + 1
Load Picturebox(a)
Picturebox(a).top = 0
picturebox(a).visible = true

' wenn deine "Note" also unten ist, wird zu a 1 addiert, und die nächste note 
' kommt geschwebt ^^

' Hier ist dann meinetwegen der Rest deines codes, ich denk ma timer event, der die  
' PictureBox nach unten bewegt oder so in der Art hast du das bestimmt gemacht oder ?!

Ich habe das mal alles so aus denk Kopf gemacht, wenns nicht stimmt bitte ich die Anderen mich zu verbessern, soooo gut kenn ich mich ja auch nicht aus ^^
 
Zuletzt bearbeitet:
Danke Lizard für deine Antwort! :)

Ich habe ein Problem mit dem Erstellen von Elementfeldern, wenn ich eine PictureBox kopiere, kommt leider keine solche Abfrage, gibts die alternativ noch irgendwo?

Kommt es aufs gleiche raus, wenn ich mir ein Array an PictureBoxen definiere?

Code:
 Dim Test(10) As PictureBox


Ach ja, vielleicht eine blöde Frage, aber ich verwende Visual Basic 2005 Express Edition, welche Version von VB wird dort eigentlich verwendet? ;)
 
Hey,
achso wollt grade fragen,
Ja also von meiner Erfahrung her weiß ich, das Visual Studios 2005 nicht sehr toll sind,
der syntax ist sehr merkwürdig, und es ist nicht alles aus vb 6 übernommen worden, soweit ich das mal gelesen hab, will Microsoft damit in eine anderer Richtung gehn, was den Programmieren aber nicht sehr gefällt, also aus meiner sicht, eignet sich vb 6 sehr gut.
Soweit ich weiß, gibt es davon eine "Portable version" die umsonst ist, oder in der Bücherei z.B. immer als kostenlose Version bei Büchern über Vb bei ist, das ist wie eine Demo, es sind die meisten Funktionen drinn, aber du kannst keine Exe erstellen.
Wenn du also merks das das was für dich ist, kannst du dann Vb 6 kaufen.

Naja, also ich habe am Anfang auch mit 2005, gearbeitet, aber da alles was in irgendwelchen tutorials stand nie funktioniert hat, hab ich mich schlau gemacht, und mir dann Vb 6 gekauft.

so lange Rede kurzer sinn, wenn du bei Visual Studios 2005 bleibs kann ich dir nich helfen
(hab grad probiert, geht wirklich nicht ^^ )
ansonste, kannst du mir per PM deine Icq Nummer (falls vorhanden) zukommen lassen, das wir da weiter drüber diskutieren können. ^^

Mfg Lizard King
 
Hey,
Naja, aber das Thema ist ja mehr oder weniger geklärt, es ist jetzt nur noch die frage, ob das in VB 2005 umsetzbar ist ? Ich bin mir nicht sicher, vllt geht es, mit den Elementefeldern, aber anders vielleicht garnicht. Dann ist die Frage, ob es sich lohnt (ich denke JA) sich VB 6 anzuschaffen.

zu deiner Idee Rockstady,

"Dim Test(10) As PictureBox"

Ich weiß nicht wie das bei dir ist, oder ob ich jetzt was falsch mache, bei mir geht das is VB 2005 nicht. (So zu Denklanieren schon, danach ist jedoch dann Ende ^^)


Da du mich mit deiner Idee sehr Faszieniert hast^^, wollte ich evlt. Fragen, ob wir das nicht zu 2. machen könnten ?


MfG Lizard King
 
Sehr sehr gerne sogar Lizard!

Da ich gerade leider in der Arbeit bin, kann ich dir meine ICQ Nummer (ist vorhanden ;-)) erst heute abend geben. Kannst dir ja bis dahin schon mal mein "Projekt" anschauen (gibts im ersten Post), ist zwar schon nicht mehr ganz aktuell, aber damit du weißt, was ich gerne hätte.

Doch doch, bei mir geht es damit schon weiter. Ich kann ihm viele Eigenschaften zuweisen, aber es wird nicht angezeigt.

Code:
            Test(Counter) = New PictureBox
            Test(Counter).Location = New Point(256, 256)
            Test(Counter).Size = New Size(100, 100)
            Test(Counter).Visible = True
            Test(Counter).SizeMode = PictureBoxSizeMode.AutoSize
            Test(Counter).BackColor = Color.Aqua
So ist es aber immer noch nicht sichtbar, wenn ich es mit einer anderen Note gleichstelle dann gehts, also
Code:
            Test(Counter) = n1
Welche Eigenschaft habe ich denn vergessen? So geht es zwar, erfüllt aber nicht seinen Zweck, weil ich so praktisch wieder ganz viele PictureBoxen erstellen muss, die dann verwendet werden können.




@ Darkflint: Freut mich, wenn daran Interesse besteht. Bei Fertigstellung wird das Projekt dann auch veröffentlicht (bei developia oder so).
 
Hey,
schön freut mich ^^
Ja habe mir dein Projekt vorher schon gezogen, eig die engine nich schlecht, ein wenig kann man noch ändern z.B. ruckeln die balken beim "Runterfahren" und die Frage ist noch, möchtest du, wie du es bis jetzt gemacht hast, es mit einem Keyboard, oder auch mit ner Gitarre machen, kann dir bei beidem Helfen da ich beide Intrumente spielen ;-)
Naja, ich lasse dir mal meine ICQ # per PM zukommen, dann kannst du mich ja adden, sobald du zuhause bist.
Ich werde (sobald ich mein Projekt fertig habe) nachschauen, ob sich das weiter in VB 2005 umsetzen lässt, ansonsten werd ich das mal in VB 6 anfangen.

MfG Lizard King
 
Zurück