Kleines Kästchen-Spiel

Übersicht BlitzBasic Codearchiv

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

 

Schnuff

BeitragSa, März 26, 2005 23:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Rob_ hat Folgendes geschrieben:
bei mir kommt jetzt eine fehlermeldung, function not found und es zeigt auf updategamma Crying or Very sad


Bei mir auf SetGamma Crying or Very sad
ich habe Blitz3D
version Question
und weis nicht wo man´n Update Umsonst bekommt Crying or Very sad Crying or Very sad

Spikespine

BeitragSo, März 27, 2005 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Auf www.blitzbasic.com ...
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
 

ke^kx

BeitragMo, März 28, 2005 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Macht wirklich fun. Ich finde es aber ein wenig unlogisch, dass du mehr Punkte für Große Kästchen (die ja leicht zu treffen sind) als für kleine gibts, die man schwerer treffen kann. Ansonsten gibt es außer ner etwas besseren Grafik nichts zu verbessern.

Jiriki

F.S. (Forum Scriptum)
Wieso hast du das eigentlich ins Codearchiev gepostet?
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

Spikespine

BeitragMo, März 28, 2005 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Wohin hätte ich es denn sonst posten sollen? Projekte? Laughing

Naja, ich kann vielleicht mal ne neue Version machen, mit schönerer Grafik... mal sehen...

Spike
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

Spikespine

BeitragMo, März 28, 2005 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
So!
Wie versprochen, die neue Version.
Ich habe den Code nochmal ganz neu geschrieben. Die Farben sind nun viel humaner und ich denke es sieht grafisch etwas besser aus. Kleine Details habe ich verbessert.


[edit] der code ist echt lang...
http://www.free-webspace.biz/A...n_new09.bb
(in neuem Browserfenster einfügen)

Verbesserungsvorschläge?

Spike
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
  • Zuletzt bearbeitet von Spikespine am Di, März 29, 2005 10:34, insgesamt 4-mal bearbeitet

Alfadur

BeitragDi, März 29, 2005 1:43
Antworten mit Zitat
Benutzer-Profile anzeigen
yeah, ich hab vorschläge... hab jetzt so 700 sec gespielt, bis level 70 oder so ... die kästchen verfolgen mich immernoch.

ab level 40 wurde der bildschirm irgendwie immer leerer, ich mußte stellenweise 10 sec warten bis überhaupt mal ein kästchen erschien... ich fänds cooler wenn pro level mehr kästchen erscheinen würden... nicht weniger.
außerdem verliere ich für jeden roten kasten der abhaut 3 punkte, sollte ich nich eher 3 kriegen, weil ich ihm ausgewichen bin?
es lief bei mir nur stellenweise mit 3fps, maximal 11, aber wenn ich winamp ausschalte und vollbild anschalte, könntens wohl mehr sein...

und so spieltechnisch fände ichs cool wenn mit sagen wir mal alle 10 level die größe deines kästchens um eins wächst... oder größere rote und kleinere weiße kästchen auftauchen, also sagen wir mal alle 50 level werden die kästchen größer respektive kleiner.

ansonsten sehr geile idee, wo ich mich gerade darüber ärgere nicht selbst drauf gekommen zu sein. big up!
A Cray is the only computer that runs an endless loop in less than four hours.

.:BotC:. Pascal

BeitragDi, März 29, 2005 4:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Echt ein cooles Spiel. Aber langsam wird der Code zum ausschneiden ein bisschen gross. Mach doch ein Hauptmenü, eine Highscore-Liste (vielleicht noch einen "Survivor"-Multiplayermodus) und dann öffne einen Thread im Projekte-Forum.


Ausserdem mache ich mir immer direkt noch den Hidepointer Befehl rein, sieht meiner Meinung nach besser aus.

Macht aber auf jeden Fall schon ne ganze Menge Spass.
 

ke^kx

BeitragDi, März 29, 2005 9:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest auch zwei (oder mehr) Modi einbauen: einmal der Fast-Modus, in dem es immer die gleiche Anzahl von Kästchen ist, die Geschwindigkeit mit jedem Level jedoch steigt und einen Multiply-Modus (mir viel nichts besseres ein), in dem die Kästchen immer mehr werden.

Die Grafik ist wirklich sehr viel besser so^^

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

Spikespine

BeitragDi, März 29, 2005 10:47
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Afaldur

level 70? ehrlich? Ich komm immer nur höchstens bis 10. Darum kann ich das leider nicht mehr testen warum ab da immer weniger erstellt wird. Denn eigentlich ändere ich da nichts dran. Die Kästchen werden nur immer schneller...
eigentlich sollten es 100 FPS sein. Schalte mal den De-bugger aus, und stelle die Partikelmenge (am Anfang) sehr klein, auf 1 z.B. Vielleicht bist du ja deshalb so weit gekommen, weil es so langsam lief Wink

Dass für die roten Squares Punkte abgezogen werden war ein Bug, ist jetzt editiert (thx). Der sinn der Regelung, dass für entwischte weiße Kästchen Punkte abgezogen werden besteht darin, dass man nicht immer nur auf einer Stelle wartet und gelegentlich mal ein weißes aufschnappt und den roten ausweicht.


@ .:BotC:. Pascal:

Ich hab den Code mal als link editiert, jetzt muss man nicht mehr so lange scrollen. Eigentlich war es ja nur als Minigame gedacht... Vielleicht bastle ich aber noch ein bisserl dran rum.


@ Jiriki:

Ja, ich schau mal...


grüße
Spike
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

Spikespine

BeitragMi, März 30, 2005 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, ich hab jetzt eine "Game"-Version gemacht. Mit Menü und Highscore-Liste.

Wers downloaden will:

SquareCather.zip

grüße,
Spike
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
 

ke^kx

BeitragMi, März 30, 2005 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Bau doch noch mehr Extras wie:

- Die weißen werden auch durch Partikeleffekte aufgesammelt (so dass man versucht möglichst schnell mit einem weißen zu kollidieren)
- Unverwundbarkeit
- größere/kleinere Kästchen (rot/weiß)
- größeres grünes Kästchen
...

Ansonsten ist es genausogut wie vorher,
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
 

The Confidant

BeitragDo, März 31, 2005 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Also bei der ersten Version hab ich...

user posted image

Punkte bekommen, muss mal die andere probieren!

Very Happy
Das ist meine Signatur

.:BotC:. Pascal

BeitragDo, März 31, 2005 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Game Version sieht gut aus, aber warum kann man das Menü nur mit der Tastatur bedienen, wenn man im eigentlichen Spiel nur die Maus braucht?

Spikespine

BeitragDo, März 31, 2005 10:15
Antworten mit Zitat
Benutzer-Profile anzeigen
@ .:BotC:. Pascal

Gute Frage Laughing
Weiß ich selber nicht, kann ich aber noch ändern^^
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
 

Gast

BeitragSa, Apr 02, 2005 23:17
Antworten mit Zitat
machs doch so:

BlitzBasic: [AUSKLAPPEN]


;..Konstanten..............................................................................
Const hell=1

Const gx=640 ;Grafikfenster auflösung
Const gy=480

Const eigenegroesse=20 ;die eigene größe

Const erstellwahrscheinlichkeit=18 ;ist sie höher, werden weniger kästchen erstellt (siehe unten)
Const maxspeed#=0.75 ;die maxdimale geschwindigkeit eines kästchens
Const maxgroesse=18 ;maximale größe eines Kästchens

Const partikelmaxspeed#=2.0

Global punkte
Global level=1
Global start ;startzeit des hSpiels
Global zeit
timer = CreateTimer(100)
Global mxspeed,myspeed,mspeed#
Global startcount=MilliSecs(),frame,frames ;für den FPS-Zähler
Global best,neuerrekord ;(siehe Function verloren)
Global bestlevel,besttime
Global verlieren
Global powerup_art
Global power_level
;..........................................................................................


Graphics gx,gy,16,1 ;Is klar - Grafikmode setzen
SeedRnd MilliSecs() ;Zufallsgenerator aktivieren
AppTitle \"Kästchen-Fangen\",\"Spiel beenden?\"

Type kaestchen
        Field x#,y# ;koordinaten
        Field richtung ;1 für links, 2 für rechts, 3 für hoch, 4 für runter
        Field speed# ;geschwindigkeit
        Field farbe ;0 - schwarz (gut); 1 - rot (böse)
        Field farbintensitaet
        Field groesse ;durchmesser
End Type

Type partikel
        Field x#,y#
        Field richtung
        Field blau ;dieser Wert wird immer erhöht, um den Partikel aufzulösen
        Field farbe ;0-normal  1-grün (wenn man verliert)
        Field speed#
End Type
Global partikel

Type punktetext
        Field x#,y#
        Field speed#
        Field farbe
        Field punkte$
End Type
Global punktetext


SetBuffer BackBuffer() ;ist auch klar
ClsColor 0,0,255 ;blauer Hintergrund

start = MilliSecs()
Repeat
       
        Cls
       
        mx = MouseX() ;mauskoordinaten abspeichern
        my = MouseY()
       
        mxspeed = MouseXSpeed()
        myspeed = MouseYSpeed()
        mspeed = Sqr(mxspeed^2+myspeed^2)
       
       
        zeit = (MilliSecs()-start) /1000
        level = Floor(zeit/10)+1+power_level
       
       
        ;...Kästchen erstellen.................................................................
        If Rand(1,erstellwahrscheinlichkeit)=1 Then
                KaestchenErstellen ;startet die Funktion
        EndIf
        ;......................................................................................
       
        ;...Kästchen abfragen..................................................................
        For kaestchen.kaestchen = Each kaestchen ;eine For each schleife, die jedes Kästchen durchgeht
                If kaestchen\richtung = 1 Then kaestchen\x = kaestchen\x - kaestchen\speed ;nach links
                If kaestchen\richtung = 2 Then kaestchen\x = kaestchen\x + kaestchen\speed ;nach rechts
               
                If kaestchen\richtung = 3 Then kaestchen\y = kaestchen\y - kaestchen\speed ;nach oben
                If kaestchen\richtung = 4 Then kaestchen\y = kaestchen\y + kaestchen\speed ;nach unten
               
                If kaestchen\x > gx Or kaestchen\x < 0-kaestchen\groesse Or kaestchen\y > gy Or kaestchen\y < 0-kaestchen\groesse Then
                        ;falls das kästchen nicht mehr zu sehen ist...
                        If kaestchen\farbe=0 Then punkte = punkte - kaestchen\groesse / 2
                        Delete kaestchen.kaestchen
                Else
                        ;andernfalls...
                        ;rote Kästchen pulsieren:
                        If kaestchen\farbintensitaet < 160 Then kaestchen\farbintensitaet = 230
                        kaestchen\farbintensitaet = kaestchen\farbintensitaet - 1       
                       
                        ;zeichnen
                        Color kaestchen\farbintensitaet*(kaestchen\farbe=1),0,0 ;farbe, entweder rot oder schwarz
                        If kaestchen\farbe<2 Then
                                Rect kaestchen\x,kaestchen\y,kaestchen\groesse,kaestchen\groesse
                        ElseIf kaestchen\farbe=2 Then
                                Oval kaestchen\x,kaestchen\y,kaestchen\groesse,kaestchen\groesse
                        EndIf
                        Color 0,255,0 ;grün für den spieler
                        If verlieren = 0 Then
                                Rect mx,my,eigenegroesse,eigenegroesse
                        EndIf
                       
                       
                        If RectsOverlap(mx,my,eigenegroesse,eigenegroesse,kaestchen\x,kaestchen\y,kaestchen\groesse,kaestchen\groesse)
                                ;simple kollisionsabfrage von rechtecken
                                If kaestchen\farbe = 0 Then
                                        Punkte = Punkte + Points(kaestchen\speed,kaestchen\groesse) ;mit der Points-funktion
                                        If points(kaestchen\speed,kaestchen\groesse)=0 Then Stop
                                        PartikelErstellen(kaestchen\x + (kaestchen\groesse/2),kaestchen\y + (kaestchen\groesse/2), kaestchen\groesse , 0)
                                        PunktetextErstellen(Points(kaestchen\speed,kaestchen\groesse),kaestchen\x,kaestchen\y)
                                        Delete kaestchen.kaestchen
                                ElseIf kaestchen\farbe = 2 Then
                                        PartikelErstellen(kaestchen\x + (kaestchen\groesse/2),kaestchen\y + (kaestchen\groesse/2), kaestchen\groesse , 0)
                                        PowerUp(kaestchen\x,kaestchen\y)
                                        Delete kaestchen.kaestchen                                               
                                Else
                                        If verlieren = 0 Then
                                                PartikelErstellen(mx+eigenegroesse/2,my+eigenegroesse/2,eigenegroesse*3, 1)
                                                Delete kaestchen.kaestchen
                                                verlieren =1
                                                PunktetextErstellen(\"LOSER!\",mx,my)
                                        EndIf
                                                                       
                                EndIf
                        EndIf

                                               
                EndIf
        Next
        ;..........................................................................................
       
        ;......Partikel............................................................................
        For part.partikel = Each partikel
                part\x = part\x + Cos(part\richtung)*part\speed
                part\y = part\y - Sin(part\richtung)*part\speed
                part\speed = part\speed * 0.95
                part\blau = part\blau + 5 - part\farbe*3
                If part\blau>=255 Then
                        If verlieren=1 And part\farbe=1 Then verloren ;function starten
                        Delete part.partikel
                       
                Else
                        Color 0,0,part\blau
                        If part\farbe = 1 Then Color 0,255-part\blau,part\blau
                        Rect part\x-1,part\y-1,3,3
                EndIf
        Next
        ;..........................................................................................
       
        ;......Punkte-Text.........................................................................
        For ptext.punktetext = Each punktetext
                ptext\y=ptext\y - ptext\speed
                ptext\speed = ptext\speed * 0.975
                ptext\farbe = ptext\farbe - 2
                If ptext\farbe =< 0 Then
                        Delete ptext.Punktetext
                Else
                        Color ptext\farbe,ptext\farbe,255
                        Text ptext\x,ptext\y,ptext\punkte
                EndIf
        Next
        ;..........................................................................................
       
       
        ;Punkte schreiben
        Color 100,100,255
        Text gx/2,gy/2,Punkte+\"  (\"+best+\")\",1,1
        Color 255,255,255
        Text gx/2-50,5,\"Level \"+level
        Text gx/2+50,5,\"Zeit: \"+zeit+\" sec\"
       
       
        ;.....FPS..................................................................................
        milliseks=MilliSecs()
        If milliseks-startcount>=1000
                startcount=milliseks
                frames=frame
                frame=0
        Else
                frame=frame+1
        EndIf
        Text 5,5,\"FPS: \"+frames
        ;...........................................................................................
       

                If hell=1 Then heller
        WaitTimer timer
        Flip 0;schneller Puffertausch
Until KeyHit(1)
End       
       
Function KaestchenErstellen()
        kaestchen.kaestchen = New kaestchen ;neues Type erstellen
        ;ab hier werden die startwerte willkürlich festgelegt:
        kaestchen\richtung = Rand(1,4) ;zufallswahl der richtung
        kaestchen\y = Rand(gy) * (kaestchen\richtung <= 2) + (gy * (kaestchen\richtung=3));hier wird zunächst...
        ;...eine Zufallszahl in maximaler Höhe der y-auflösung gewählt. Falls sich das Kästchen nach oben
        ;oder unten bewegt, soll die Y-Koordinate nicht irgendwo sein sondern 0 oder 480 ! Darum stelle ich eine bedingung
        ;(dass die richtung 1 oder 2 bzw. links oder rechts sein soll. Wenn sie wahr ist, bleibt die Zufallszahl bestehen.
        ;andernfalls ist die Bedingung false, also 0, darum ist das Gesamtergebnis auch 0. wenn sich das Kästchen
        ;nach oben bewegt, wird der y-startwert auf gy (480) gesetzt, mithilfe einer Bedingung.
        kaestchen\x = Rand(gy) * (kaestchen\richtung >= 3) + (gx * (kaestchen\richtung=1)) ;the same procedure...
        kaestchen\speed = Rnd(0.4,maxspeed) * ((level+2)/3) ;die Speed wird zufällig gewählt
        kaestchen\farbe = Rand(0,1) ;genauso die Farbe...
        kaestchen\groesse = Rand(maxgroesse/2,maxgroesse)
        kaestchen\farbintensitaet=255
        If kaestchen\farbe=0 And kaestchen\groesse > (maxgroesse/3)*2 And kaestchen\speed > (maxspeed/3) * 2 And Rand(1,4)=2 Then
                kaestchen\farbe=2
                kaestchen\groesse = (maxgroesse/3)*2
                kaestchen\speed = (maxspeed/3)*4
        EndIf
End Function

Function Points(speed#,groesse)
        Return Ceil(speed)*groesse ;die formel kann verändert werden
End Function

Function verloren()
        Cls
        If punkte > best Then
                best = punkte
                neuerrekord=1
                bestlevel=level
                besttime=time
        Else
                neuerrekord=0
        EndIf
        FlushKeys
        Color 255,255,255
        Text gx/2,gy/2,\"GAME OVER! Erreichte Punkte: \"+punkte+\" (im \"+level+\". Level, bei \"+zeit+\" Sekunden)\",1,1
        Text gx/2,gy/2+20,String(\"Das ist ein neuer Rekord!!\",neuerrekord),1,1
        Text gx/2,gy/2+20,String(\"Rekord: \"+best+\" Punkte im \"+bestlevel+\". Level, bei \"+zeit+\" Sekunden\",1-neuerrekord),1,1
        Text gx/2,gy/2+50,\"Für neues Spiel Enter, für ende Esc drücken!\",1,1
        Flip
        Repeat
                If KeyHit(1) Then End        ;bei esc sofort beenden
        Until KeyHit(28)                ;bei enter gehts weiter
        spielerstellen ;funktion wird gestartet
        Return
       
End Function

Function spielerstellen() ;diese Funktion reset-ed alle variablen
        For kaestchen.kaestchen = Each kaestchen ;eine schleife für die Kästchen
                Delete kaestchen.kaestchen ;löschen
        Next
        punkte = 0
        start = MilliSecs()
        level = 1
        verlieren = 0
        power_level=0
End Function

Function PartikelErstellen(part_x,part_y,part_menge, part_farbe) ;diese Funktion erstellt Partikel
        For i=0 To part_menge*5
                part.partikel=New partikel
                part\farbe = part_farbe
                part\x=part_x ;x-koordinate, die der Funktion überwiesen wurde
                part\y=part_y ;y-koordinate   \"
                part\richtung = Rand(0,89)*4 ;willkürlich von 0-356 in 4er schritten
                part\speed = Rnd((partikelmaxspeed/3)*2,partikelmaxspeed)+(mspeed/4) + 3 * part\farbe ;bei grün umsomehr
               
        Next
End Function
       
Function PunktetextErstellen(ptext_punkte$,ptext_x,ptext_y)
        ptext.punktetext= New punktetext
        ptext\x=ptext_x
        ptext\y=ptext_y
        ptext\speed=2.0
        ptext\punkte=ptext_punkte
        ptext\farbe=255
End Function

Function PowerUp(pu_x,pu_y)
        powerup_art=Rand(1,6)
        Select powerup_art
                Case 1
                        PunktetextErstellen(\"BLACK DISESE!!\",pu_x,pu_y)
                        For kaestchen.kaestchen = Each kaestchen
                                kaestchen\farbe=0
                        Next
                Case 2
                        PunktetextErstellen(\"POINTS +100!\",pu_x,pu_y)
                        punkte = punkte + 100
                Case 3
                        PunktetextErstellen(\"POINTS +250!\",pu_x,pu_y-15)
                        PunktetextErstellen(\"RED DISESE!!\",pu_x,pu_y)
                        punkte = punkte + 250
                        For kaestchen.kaestchen = Each kaestchen
                                kaestchen\farbe=1
                        Next
                Case 4
                        PunktetextErstellen(\"SLOW-MOTION!\",pu_x,pu_y)
                        For kaestchen.kaestchen = Each kaestchen
                                If kaestchen\speed >= maxspeed /2 Then kaestchen\speed = kaestchen\speed * 0.4
                        Next
                Case 5
                        PunktetextErstellen(\"MEGA-SPEED!\",pu_x,pu_y)
                        For kaestchen.kaestchen = Each kaestchen
                                kaestchen\speed = kaestchen\speed * 2
                        Next
                Case 6
                        PunktetextErstellen(\"Next Level!\",pu_x,pu_y)
                        power_level = power_level + 1
                       
                       
                       
        End Select
               
End Function
Function heller()
        For i=0 To 255
                SetGamma i,i,i,i+75,i+75,i+75
        Next
        UpdateGamma
End Function
 

feider

ehemals "Decelion"

BeitragSo, Apr 03, 2005 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist gut!!!
SEHR gut!!
 

NetPad

BeitragSo, Apr 03, 2005 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
ich mag es, wenn es so simpel ist und trotzdem spass macht!
wenn du jetzt noch ein paar schöne grafiken einbaust und vieleicht noch ein paar hindernisse oder so ist das sicherlich sehr unterhaltsam.

gratulation!
hattest du diese idee des spielprinzips, oder gab es das schon einmal?

grs NP

stfighter01

BeitragSo, Apr 03, 2005 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
herrliches game!!! Mr. Green

mehr gibts dazu wohl auch nicht zu sagen.

daumen hoch.


mfg stfighter
Denken hilft!

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group