Verfolger

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Ist ein wenig langweilig(keine Hindernisse, oder ein Labirinth) aber sonst ists in Ordnung.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

pm hat geschrieben:Hallo,

ich wäre übrigens auch froh, wenn ihr ein Feedback könntet schreiben!

Pascal :mrgreen:
Okay, also ich sehe einen roten kleine Klotz und nen Hellblauen größeren, sowie diverse Texte. Es rührt sich aber nichts. Auf dem Bildschirm steht unter anderm Pause, warum auch immer. Soll ich das ganze Anstieren oder was muß ich tun ?

Zum Source: Sehr nostalgisch, erinnert mich an 1970 :mrgreen:
Ich hoffe Du versteht den unstrukturierten Code
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

Ach ja, das hatte ich vergessen. Immer wenn du in ein neues Level kommst, wird die Pause aktiviert. Die Pause kannst du aktivieren/deaktivieren mit P.

Pascal :mrgreen:

P.S.: 1970 war ich gar noch nicht geboren! :lol: :lol:
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

Noch ne kleine Verbesserung:

Code: Alles auswählen

If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse()=0
  MessageRequester("Error", "Can't open DirectX 7 or later", 0)
  End
EndIf
#Benzin=1000
Zeitneu=500
auswahl=1
If OpenScreen(1024, 768, 16, "Sprite")
Repeat
ClearScreen(0,0,0)
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
If KeyboardReleased(#PB_Key_Up)
If auswahl=1
auswahl=2
Else
auswahl=1
EndIf
ElseIf KeyboardReleased(#PB_Key_Down)
If auswahl=2
auswahl=1
Else
auswahl=2
EndIf
EndIf
StartDrawing(ScreenOutput())
DrawingMode(1)
If auswahl=2
FrontColor(255,255,255)
Locate(500,400)
DrawText("Tastatur")
Locate(500,420)
FrontColor(255,0,255)
DrawText("Maus")
Else
FrontColor(255,0,255)
Locate(500,400)
DrawText("Tastatur")
Locate(500,420)
FrontColor(255,255,255)
DrawText("Maus")
EndIf
Locate(500,460)
FrontColor(255,255,255)
DrawText("Auswahl bestätigen mit J")
StopDrawing()
If KeyboardPushed(#PB_Key_J)
auswahlfertig=1
If auswahl=1
var$="Tastatur"
Else
var$="Maus"
EndIf
EndIf
FlipBuffers()
Until auswahlfertig=1

Benzin=#Benzin
OpenPreferences("Optionen.dat")
Level$=ReadPreferenceString("Level", "1")
Level = Val(Level$)
PunkteTotal$=ReadPreferenceString("PunkteTotal", "0")
PunkteTotal = Val(PunkteTotal$)
DeleteFile("Optionen.dat")
speed1=8
x1=0
Dim speed2.f(100000)
Dim x2.f(100000)
Dim y2.f(100000)
speed2(1)=1
For I = 2 To 100000
y2(I)=1888
x2(I)=1888
Next I
x2(1)=1000
y1=0
y2(1)=500
x1=Random(1000)
y1=Random(650)
CreateImage(1,5,5)
UseImage(1)
StartDrawing(ImageOutput())
Box(0,0,5,5,RGB(255,0,0))
StopDrawing()
SaveImage(1,"Spieler.bmp")
FreeImage(1)
LoadSprite(0, "Spieler.bmp")
CreateImage(1,10,10)
UseImage(1)
StartDrawing(ImageOutput())
Box(0,0,10,10,RGB(0,255,255))
StopDrawing()
SaveImage(1,"Gegner.bmp")
FreeImage(1)
LoadSprite(1, "Gegner.bmp")
CreateImage(1,10,10)
UseImage(1)
StartDrawing(ImageOutput())
Box(0,0,10,10,RGB(0,0,255))
StopDrawing()
SaveImage(1,"Bonus.bmp")
FreeImage(1)
LoadSprite(2, "Bonus.bmp")
zeit=Zeitneu
letzt=1
Pa=1
  Repeat
   ClearScreen(0,0,0)
    ExamineKeyboard()
    ExamineMouse()
    If Pa=0
    zeit-1
      If var$="Tastatur"
      If verkehrt=0
    If KeyboardReleased(#PB_Key_P)
    Pa=1
    EndIf
    If KeyboardPushed(#PB_Key_Left)
    x1-speed1
    Benzin-1
    If Benzin=0
    Punkte-20
    Benzin=#Benzin
    EndIf
    ElseIf KeyboardPushed(#PB_Key_Right)
    x1+speed1
    Benzin-1
    If Benzin=0
    Punkte-20
    Benzin=#Benzin
    EndIf
    ElseIf KeyboardPushed(#PB_Key_Up)
    y1-speed1
    Benzin-1
    If Benzin=0
    Punkte-20
    Benzin=#Benzin
    EndIf
    ElseIf KeyboardPushed(#PB_Key_Down)
    y1+speed1
    Benzin-1
    If Benzin=0
    Punkte-20
    Benzin=#Benzin
    EndIf
    EndIf
    Else
    If KeyboardReleased(#PB_Key_P)
    Pa=1
    EndIf
    If KeyboardPushed(#PB_Key_Left)
    x1+speed1
    Benzin-1
    If Benzin=0
    Punkte-20
    Benzin=#Benzin
    EndIf
    ElseIf KeyboardPushed(#PB_Key_Right)
    x1-speed1
    Benzin-1
    If Benzin=0
    Punkte-20
    Benzin=#Benzin
    EndIf
    ElseIf KeyboardPushed(#PB_Key_Up)
    y1+speed1
    Benzin-1
    If Benzin=0
    Punkte-20
    Benzin=#Benzin
    EndIf
    ElseIf KeyboardPushed(#PB_Key_Down)
    y1-speed1
    Benzin-1
    If Benzin=0
    Punkte-20
    Benzin=#Benzin
    EndIf
    EndIf
    EndIf
    ElseIf var$="Maus"
    xm=MouseX()
    ym=MouseY()
    If xm=xmv
    Else
    Benzin-1
    xmv=xm
    EndIf
    If ym = ymv
    Else
    Benzin-1
    ymv=ym
    EndIf
    x1=xm
    y1=ym
    If Benzin=0 Or Benzin<0
    Punkte-20
    Benzin=#Benzin
    EndIf
    EndIf
    If x1 = bx1
    If y1 > by1
    by1+Random(7)
    ElseIf y1 < by1
    by1-Random(7)
    EndIf
    Else
    If x1 > bx1
    bx1+Random(7)
    ElseIf x1 < bx1
    bx1-Random(7)
    EndIf
    EndIf
    For I = 1 To 100
    If x1 = x2(I)
    If y1 > y2(I)
    y2(I)+Random(6)
    ElseIf y1 < y2(I)
    y2(I)-Random(6)
    EndIf
    Else
    If x1 > x2(I)
    x2(I)+Random(6)
    ElseIf x1 < x2(I)
    x2(I)-Random(6)
    EndIf
    EndIf
    Next I
    Else
    If KeyboardReleased(#PB_Key_P)
    Pa=0
    EndIf
    EndIf
     DisplaySprite(0, x1,y1)
    For I = 1 To 100
    DisplaySprite(1, x2(I), y2(I))
    If SpriteCollision(0,x1,y1,1,x2(I),y2(I))
    CloseScreen()
    exit=1
    DeleteFile("Gegner.bmp")
    DeleteFile("Spieler.bmp")
    DeleteFile("Bonus.bmp")
    MessageRequester("GAME OVER!", "GAME OVER"+Chr(10)+"Sie haben "+Str(PunkteTotal)+" erreicht!", #MB_ICONINFORMATION)
     DeleteFile("Optionen.dat")
     CreatePreferences("Optionen.dat")
     WritePreferenceString("Level", Str(Level))
     WritePreferenceString("PunkteTotal", Str(PunkteTotal))
     StartTimer=ElapsedMilliseconds()
    Repeat
      StopTimer=ElapsedMilliseconds()
      TotalTimer=StopTimer-StartTimer
    Until TotalTimer>5000
     ClosePreferences()
     End
    EndIf
    Next I
     If zeit=0
    x2(letzt+1)=Random(1000)
    y2(letzt+1)=Random(650)
    speed=Random(3)
    If speed=0 : speed=1 : EndIf
    speed2(letzt+1)=speed
    letzt+1
    Punkte+(speed*20*4)
    zeit=Zeitneu
    EndIf
    Select Level
    Case 1
    Zeitneu=500
    P=100
    Case 2
    Zeitneu=400
    P=500
    Case 3
    Zeitneu=300
    P=1000
    Case 4
    Zeitneu=200
    P=1100
    Case 5
    Zeitneu=100
    P=1500
    Case 6
    Zeitneu=90
    P=2000
    Case 7
    Zeitneu=80
    P=2100
    Case 6
    Zeitneu=70
    P=2500
    Case 7
    Zeitneu=60
    P=3000
    Case 8
    Zeitneu=50
    P=3100
    Case 9
    Zeitneu=40
    P=3500
    Case 10
    Zeitneu=30
    P=4000
    Case 11
    Zeitneu=20
    P=4100
    Case 12
    Zeitneu=10
    P=4500
    Case 13
    Zeitneu=9
    P=5000
    Case 14
    Zeitneu=8
    P=5100
    Case 15
    Zeitneu=7
    P=5500
    Case 16
    Zeitneu=6
    P=6000
    Case 17
    Zeitneu=5
    P=6100
    Case 18
    Zeitneu=4
    P=6500
    Case 19
    Zeitneu=3
    P=7000
    Case 20
    Zeitneu=2
    P=8000
    Case 21
    Zeitneu=1
    P=8100
    EndSelect
    If var$="Tastatur"
    DisplaySprite(2,bx1,by1)
    If SpriteCollision(0,x1,y1,2,bx1,by1)
    verkehrt=1
    EndIf
    EndIf
    If Punkte=P Or Punkte>P
    x1=Random(1000)
    y1=Random(650)
    PunkteTotal+Punkte
    Punkte=0
    StartTimer=ElapsedMilliseconds()
    Repeat
      StopTimer=ElapsedMilliseconds()
      ClearScreen(0,0,0)
      StartDrawing(ScreenOutput())
      Locate(1024/2-TextLength("Level geschafft"), 768/2)
      DrawText("LEVEL GESCHAFFT!!!")
      StopDrawing()
      FlipBuffers()
      TotalTimer=StopTimer-StartTimer
    Until TotalTimer>5000
    If Level=21
    CloseScreen()
    MessageRequester("Gratulation!", "Herzlichen Glückwunsch! Sie haben alle Level gemeistert!", #MB_ICONINFORMATION)
    End
    EndIf
    verkehrt=0
    Level+1
    Pa=1
    EndIf
    StartDrawing(ScreenOutput())
    DrawingMode(1)
    FrontColor(255,255,255)
    Locate(20,20)
    DrawText("Level "+Str(Level))
    Locate(20,40)
    DrawText("Score: "+Str(Punkte)+"/"+Str(P))
    Locate(20,60)
    DrawText("Benzin: "+Str(Benzin)+" l")
    Locate(20,100)
    DrawText("Total Punkte: "+Str(PunkteTotal+Punkte))
    If Pa=1
    Locate(500,500)
    DrawText("PAUSE")
    EndIf
    StopDrawing()
    FlipBuffers()
     Until KeyboardPushed(#PB_Key_Escape) Or exit=1
     DeleteFile("Gegner.bmp")
     DeleteFile("Spieler.bmp")
     DeleteFile("Bonus.bmp")
Else
  MessageRequester("Error", "Can't open a 640*480 - 16 bit screen !", 0)
EndIf
End 
Was ist anders:
Es gibt jetzt auch ein dunkelblaues Viereck. Wenn man das dunkelblaue Viereck berührt, ist alles verkehrt: Rechts ist Links und Links ist Rechts und Oben ist Unten und Unten ist Oben. Funktioniert nur bei Tastaturmodus.

Steuerung:
Bewegen: Maus oder Tastatur (Im Menü wählbar)
Beenden: Esc
Pause aktivieren/deaktivieren: P
Auswahl bestätigen: J
Auswählen: Cursortaste Hoch und Runter

Viel Spass beim spielen.
Pascal :mrgreen:

P.S.: Bitte postet ein Feedback! :D
Zuletzt geändert von PMTheQuick am 21.07.2005 13:36, insgesamt 1-mal geändert.
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

hab da noch nen bug.
das benzin sollte ja für X punkte wieder aufgefüllt werden, wenn es bei 0 ist.
im 1 level gings noch, aber ab dem 2 sinkt das benzin ins -

ist der bug schon bekannt?
-.-"
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

@Green Snake
Danke für das tolle Feedback. :D Ich habe es jetzt oben verbessert. Kopiere einfachnochmal den Code und füge ihn ein. Es sollte jetzt alles gehen.

Pascal 8)

P.S.: Wenn ihr Wünsche habt dann schreibt sie. Ich werde sie dann 100% erfüllen. :mrgreen:
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

pm hat geschrieben:P.S.: Wenn ihr Wünsche habt dann schreibt sie. Ich werde sie dann 100% erfüllen. :mrgreen:
Mach das ganze mit Figuren(Sprites) in einem Labirinth.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

@DarkDragon
Ich habe jetzt zwar noch nicht ein Labyrinth eingebaut, habe aber die Vierecke durch Sprites ersetzt.

Download Link:

Beim nächsten Post.

Anleitung:

Jetzt sage ich nur noch, welches Sprite was ist:

Das schwarz-weisse Sprite macht alles verkehrt: Aus rechts wird Links Aus Oben wird unten u.s.w..

Das blaue Männchen ist der Gegner, das andere der Spieler.

Viel Spass
Pascal :mrgreen:

P.S.: Bitte postet ein Feedback und wenn ihr Wünsche habt auch Wünsche.
Zuletzt geändert von PMTheQuick am 06.08.2005 11:52, insgesamt 1-mal geändert.
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

Nochmal eine bessere Version mit besseren Grafiken: http://mitglied.lycos.de/pascalmathis/Codes/PureBasic/

Die Grafiken haben die gleiche Bedeutung wie vorher.

Pascal :mrgreen:
Zuletzt geändert von PMTheQuick am 06.08.2005 15:49, insgesamt 1-mal geändert.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Der Breich ist Passwortgeschützt.
Antworten