SantaBalls - Clone
Übersicht BlitzBasic Allgemein
Ted1406Betreff: SantaBalls - Clone |
Sa, Apr 24, 2004 13:04 Antworten mit Zitat |
|
---|---|---|
Aloha,
ich bin neu hier, und absoluter Beginner im Bereich BlitzBasic. Um irgendwann einmal die 3D-Fähigkeiten dieser Programmiersprache nutzen zu können, dachte ich mir... ich fange mal mit den 2D-Funktionen an. Also hab ich viel gelesen... bin etliche Tut's durch... und weiß erstmal dem Grunde nach worum es geht... Programmiererfahrungen aus dem Bereich VBA bringe ich mit... ebenfalls Kenntnisse in SQL, was mir allerdings für BlitzBasic wenig bringt... Ich dachte mir, bevor ich mir großartige Gedanken um ein eigenes Spiel mache, wersuche ich ein bestehendes Spiel zu klonen. Opfer soll hier nun das Spiel 'SantaBalls 2' sein. Das Spielbrett hab ich, die Kugeln (bei mir Sterne) hab ich... die xy-Positionen der 77 Felder hab ich (zweidimensionales Dim-Feld). Wie bekomme ich es nun hin, dass die Sterne (es gibt zunächst 4 verschiedene Farben) zufällig auf das Spielfeld verteilt werden? Danke. Ted1406 |
||
regaa |
Sa, Apr 24, 2004 13:07 Antworten mit Zitat |
|
---|---|---|
seedrnd millisecs()
pos_x=rnd(1,600) pos_y=rnd(1,480) oder wie auch immer, schau einfach in der Hilfe auf blitzbase.de unter Zufall nach. Das sollte ein Gedankenstoss sein, also wenn du da nicht erkennst das der bereich von 1-640, und 1-480 gehen sollte, dann weiß ich auch nicht weiter . |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
- Zuletzt bearbeitet von regaa am So, Apr 25, 2004 12:01, insgesamt einmal bearbeitet
Ted1406 |
So, Apr 25, 2004 10:37 Antworten mit Zitat |
|
---|---|---|
Aloha,
also... ohne den Code zu integrieren... erkennt mein ungeschultes Auge, dass dies nicht ganz zum Erfolg führen wird... diese Zeilen würden ja wie wild auf dem Screen meine Sterne verteilen... die Positionen sind mir jedoch schon bekannt... wie bereits erwähnt... Ted1406 |
||
graythread |
So, Apr 25, 2004 11:48 Antworten mit Zitat |
|
---|---|---|
Dann gibst du eben sowas in etwa ein?
seedrnd millisecs() pos_x=rnd(0,77) pos_y=rnd(0,77) Und dann Multiplizierst du das Ergebnis mit der Breite/Länge eines jeden Feldes. Das Problem ist, ich weiß nicht genau, wie den Feld aussieht, Skizze wäre hilfreich. |
||
KabelbinderSieger des WM-Contest 2006Betreff: Gute frage |
So, Apr 25, 2004 21:23 Antworten mit Zitat |
|
---|---|---|
Also das mit den Sechseck-Formen ist glaub ich ziemlich schwer. zum beispiel müsste da ja jede zweite Zeile Verstzt werden und ich kenne jedenfalls kenne keinen Befehl, der angibt, ob eine Zahl gerade oder ungerade ist. Probier es besser erstmal mit Quadraten.
Was die Sterne betrifft, die solltest du erstmal alle definieren: Code: [AUSKLAPPEN] Dim Stern(30,30)
Dann gibst du jedem Stern seine Eigenschaften: Code: [AUSKLAPPEN] For Zeile = 1 to 30
For Spalte = 1 to 30 Stern(Zeile,Spalte) = Rand(1,4) Next Next Das Rand(1,4) repräsentiert die Eigenschaft. Und vergiss Code: [AUSKLAPPEN] SeedRnd Millisecs()
nicht Außerdem, sag mal, wie ist es eigentlich so auf Hawaii? |
||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
walskiEhemaliger Admin |
So, Apr 25, 2004 23:36 Antworten mit Zitat |
|
---|---|---|
1.
Zitat: ich kenne jedenfalls kenne keinen Befehl, der angibt, ob eine Zahl gerade oder ungerade ist. Code: [AUSKLAPPEN] ;returns 1 if a given number is even, 0 if it's not Function Even(Number) If Number Mod 2 = 0 Then Return 0 Else Return 1 EndIf End Function ;returns 1 if a given number is odd, 0 if it's not Function Odd(Number) If Number Mod 2 = 0 Then Return 1 Else Return 0 EndIf End Function 2. Wieso so kompliziert? Gib doch einfach jedem Stern einen zusätlichen Parameter (Im Array eine extra Dimension, wenn du Types nutzt eben ein extra Feld), der das Feld (dessen "ID") angibt. Wenn du nun die Felder zeichnest prüfst du dabei gleich noch ob ein Stern die gleiche "ID" hat wie das jeweilige Feld und wenn ja, dann zeichest du den gleich mit. walski |
||
buh! |
Ted1406 |
Mo, Apr 26, 2004 7:56 Antworten mit Zitat |
|
---|---|---|
Aloha,
vorab... wie es auf Hawai ist, durfte ich bis heute leider nicht am eigenen Leibe erfahren... Ich bin begeistert davon, welche Resonanz einem Neuling in diesem Forum entgegengebracht wird... Danke dafür. Wie ich lese, hat sich der eine oder andere tatsächlich die Mühe gemacht... und sich mal das 'Original' meines Klon-Versuches angesehen... 'graythread' bat um Skizzierung meiner Idee... das macht das Ganze wahrscheinlich wirklich einfacher für alle... also Das hier ist der Stand meiner bisherigen Arbeit. Das Spielbrett (einschließlich Kreise) ist Hintergrundgrafik... die Sterne (derzeit 4 verschiedene Farben) sind einzelne Grafiken. Ich habe mich zunächst an den ersten Posts hier im Thread orientiert... und mich mit der zufälligen Auswahl und Verteilung der Sterne beschäftigt. Hier mal der komplette Code... und nicht vergessen... ich übe noch... Code: [AUSKLAPPEN] AppTitle "TedStars" SetBuffer BackBuffer() Graphics 800, 600, 16, 2 SeedRnd MilliSecs() Brett = LoadImage ("Spielbrett.bmp") Rot = LoadImage ("SternRot.bmp") Gelb = LoadImage ("SternGelb.bmp") Gruen = LoadImage ("SternGruen.bmp") Lila = LoadImage ("SternLila.bmp") MaskImage Rot,255,0,255 MaskImage Gelb,255,0,255 MaskImage Gruen,255,0,255 MaskImage Lila,255,0,255 DrawBlock Brett, 0, 0 pos_y=101 For felderneun = 1 To 5 pos_x=254 For feld = 1 To 9 Sternzahl=Rnd(1,4) Select Sternzahl Case 1 Stern = Rot Case 2 Stern = Gelb Case 3 Stern = Gruen Case 4 Stern = Lila End Select DrawImage Stern, pos_x, pos_y pos_x = pos_x + 50 Next pos_y = pos_y + 88 Next pos_y=145 For felderacht = 1 To 4 pos_x=278 For feld = 1 To 8 Sternzahl=Rnd(1,4) Select Sternzahl Case 1 Stern = Rot Case 2 Stern = Gelb Case 3 Stern = Gruen Case 4 Stern = Lila End Select DrawImage Stern, pos_x, pos_y pos_x = pos_x + 50 Next pos_y = pos_y + 88 Next Diese Lösung bringt zwar das gewünschte Ergebnis auf den Screen... nur kann ich damit in der weiteren Überlegung noch nichts anfangen, da das Programm ja nun immer noch nicht weiß, welcher Stern auf welchem Feld liegt... Also werde ich mich mit Arrays beschäftigen müssen... wahrscheinlich sogar mit Types... Ich hatte versucht mich anhand dieses Beitrags zur orientieren... aber das ist mir noch eine Spur zu weit fortgeschritten... Ich verstehe dort die Verwendung des 2-dimensionalen Arrays für die xy-Positionen nicht... Ted1406 |
||
BladeRunnerModerator |
Mo, Apr 26, 2004 8:16 Antworten mit Zitat |
|
---|---|---|
Hallo....
und Willkommen hier bei uns auch von mir. Wenn ich dich richtig Verstanden Habe, willst Du wissen wie Du speichern kannst in Welchem Feld der Karte welche Farbe vorliegt. Deine Karte ist 9*9 Felder groß, daher machen wir ein ebensogroßes Dimfeld: Code: [AUSKLAPPEN] Dim Karte(8,8) 8 deswegen weil Dims bei null beginnen, Du hast jetzt also folgendes Feld im Rechner:
Zitat: _ 0 1 2 3 4 5 6 7 8 <--erster Wert (=x) bei Karte(x,y) 0 <-- 2.er Wert(=y) bei Karte(x,y) 1 2 3 4 5 6 7 8 Du kannst jetzt also mit Karte(x,y) jedes deiner Felder erreichen, zB: Zitat: Karte(2,5) -->das ist das 3e Feld in der 6en Reihe. Wenn du nun mit Rnd eine Farbe zuweist, sollte jede der Farben einen festen Codewert haben, zB rot=0, Blau=1, Grün=2, Gelb=3 Diesen Wert schreibst du in das entsprechende Feld: Code: [AUSKLAPPEN] for x=0 to 8 for y=0 to 8 Karte(x,y)=rnd(0,3) next next danach hat jedes der Felder zufällig eine Farbe erhalten, und diese ist zur weiteren Verwendung in deinem Dim "karte" gespeichert. beim Zeichnen der Sterne musst du nur bei jedem Feld den Farbwert auslesen und einen passend gefärbten stern einzeichen. Et voila... |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
graythread |
Mo, Apr 26, 2004 13:49 Antworten mit Zitat |
|
---|---|---|
Hm, ganz verstanden hab ich das jetzt nicht BladeRunner
Aber auf jeden Fall muss sein Array 77 Felder groß sein (Immer wechselnd zwischen 9 und 8 pro Reihe). Demnach ists wohl nicht ganz so einfach... |
||
KabelbinderSieger des WM-Contest 2006Betreff: Achja |
Mo, Apr 26, 2004 14:26 Antworten mit Zitat |
|
---|---|---|
Achja, Genau, Mod! gib den Rest an, ich hatte es gerade nicht im Kopf und was man nicht im Kopf hat, muss man in den Beinen haben [/code] | ||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
BladeRunnerModerator |
Mo, Apr 26, 2004 16:20 Antworten mit Zitat |
|
---|---|---|
PSEUDO:
Code: [AUSKLAPPEN] if (y and 1) then ;ist y ungerade ? ;position um ein halbes feld eingerückt ;und mal nur von x=0 bis x=7 else ;mal alle x-e ohne Einrückung end if Is doch so einfach, gray.... |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
HOT-BITGast |
Mo, Apr 26, 2004 17:02 Antworten mit Zitat |
|
---|---|---|
Hi !
da ich ja auch so eine Art Iso bei meinem AKI habe, möchte ich meine Lösung bereit stellen. Wer daraus nicht klug wird, braucht sich nicht zu ärgern. Ich kapier es auch nicht Code: [AUSKLAPPEN] zaehler=0
x1=-1 For y=0 To 12 For x=0 To 12 x1=x1+1 Read map(x,y) If map(x,y)=1 zaehler=zaehler+1 hexi_x(x,y)=60+(x1 And 1)+(x*51) hexi_y(x,y)=60+y*21 Next Next Die Variable >zaehler< zählt mit, wieviele Felder gesetzt sind. Hier gibt es ein Array mit 13X13 Feldern. Toni |
||
regaa |
Di, Apr 27, 2004 7:49 Antworten mit Zitat |
|
---|---|---|
HOT-BIT hat Folgendes geschrieben:
Das ist ja mal ne strange zeile, also echt, benutzt das hier wer regelmäßig? Oda ist das ne Noob Frage von mir? |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
HOT-BITGast |
Di, Apr 27, 2004 8:44 Antworten mit Zitat |
|
---|---|---|
Hallo !
löl Nein, das wird nicht regelmäßig so gemacht. Ist eine sehr spezifische Angelegenheit ! Dachte mir schon beim posten, daß wenig Antworten da drauf folgen werden Toni |
||
Ted1406 |
Di, Apr 27, 2004 13:48 Antworten mit Zitat |
|
---|---|---|
So... nun hab ich mich also für's Dimensionieren entschieden... Types fallen wohl erst mal flach, das es ja um eine feste Größe von Sternen geht...
Code: [AUSKLAPPEN] AppTitle "TedStars" SetBuffer BackBuffer() Graphics 800, 600, 16, 2 SeedRnd MilliSecs() ;Spielbrett laden und anzeigen Brett = LoadImage ("Spielbrett.bmp") DrawBlock Brett, 0, 0 ;Sterne laden und transparente Farbe auf Pink setzen Rot = LoadImage ("SternRot.bmp") Gelb = LoadImage ("SternGelb.bmp") Gruen = LoadImage ("SternGruen.bmp") Lila = LoadImage ("SternLila.bmp") MaskImage Rot,255,0,255 MaskImage Gelb,255,0,255 MaskImage Gruen,255,0,255 MaskImage Lila,255,0,255 ;Spielfeld dimensionieren (77 Felder, x-Position in 0, y-Position in 1) Dim Sternfeld (76,1) ;Startwerte Stern = -1 PosX = 254 PosY = 101 ;Sterne den 77 Spielfeldern zuordnen For FeldZaehler = 0 To 76 Stern = Stern + 1 Sternfeld (Stern,0) = PosX Sternfeld (Stern,1) = PosY PosX = PosX + 50 If PosX = 704 Then PosX = 278 PosY = PosY + 44 End If If PosX = 678 Then PosX = 254 PosY = PosY + 44 End If Next Nun muss ich nur noch die Farben den Feldern zuordnen. Ist das bisher ungünstig gelöst? Ted1406[/code] |
||
HOT-BITGast |
Di, Apr 27, 2004 14:24 Antworten mit Zitat |
|
---|---|---|
JA
Mach es doch mit Types ! Hast ja viel mehr Möglichkeiten und ist echt easy ! Z.B: Code: [AUSKLAPPEN] Type SternFeld
Field x,y,Farbe ; ........ End Type ;Startwerte PosX = 254 PosY = 101 ;Sterne den 77 Spielfeldern zuordnen For FeldZaehler = 0 To 76 star.SternFeld=New SternFeld star\x=PosX star\y=Posy star\Farbe= Rand(255) ; oder Bild oder aus Datei oder Data's auslesen ; star\irgendwas ...... PosX = PosX + 50 If Posx=704 Posx=278 : Posy=Posy+44 If Posx=678 Posx=254 : Posy=Posy+44 Next For star.SternFeld=Each SternFeld ;DrawImage SternBild,star\x, star\y ;, star\Frame Oval star\x, star\y, 40, 40 Next WaitKey Hmmm, wobei ich voraussetze, daß du mit Types umgehen kannst ! Ansonsten ist es für einen Newbie doch besser, mal mit Array's zu üben. Man hat da für einen Anfänger leichteren Zugang zu den Variablen. Sprich Feldern. Toni |
||
soli |
Di, Apr 27, 2004 15:26 Antworten mit Zitat |
|
---|---|---|
Zitat: So... nun hab ich mich also für's Dimensionieren entschieden... Types fallen wohl erst mal flach, das es ja um eine feste Größe von Sternen geht...
Endlich mal einer der Types richtig versteht. |
||
solitaire |
regaa |
Di, Apr 27, 2004 17:04 Antworten mit Zitat |
|
---|---|---|
HOT-BIT hat Folgendes geschrieben: Hallo !
löl Nein, das wird nicht regelmäßig so gemacht. Ist eine sehr spezifische Angelegenheit ! Dachte mir schon beim posten, daß wenig Antworten da drauf folgen werden Toni ` Phooo, ich hab gedacht mir ist echt was entgangen. |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
Übersicht BlitzBasic Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group