Verfolger

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Verfolger

Beitrag von PMTheQuick »

Hallo, :mrgreen:

hier mal ein kleines nutzloses Spiel:

Code: Alles auswählen

If InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Can't open DirectX 7 or later", 0)
  End
EndIf
#Benzin=1000
Zeitneu=500
If OpenScreen(1024, 768, 16, "Sprite")
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(100)
Dim x2.f(100)
Dim y2.f(100)
speed2(1)=1
For i = 2 To 100
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")
Zeit=Zeitneu
letzt=1
  Repeat
   ClearScreen(0,0,0)
    ExamineKeyboard()
    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
    For i = 1 To 100
    If x1 = x2(i)
    If y1 > y2(i)
    y2(i)+Random(7)
    ElseIf y1 < y2
    y2(i)-Random(7)
    EndIf
    Else
    If x1 > x2(i)
    x2(i)+Random(7)
    ElseIf x1 < x2(i)
    x2(i)-Random(7)
    EndIf
    EndIf
    Next i
    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")
    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
    Zeit-1
    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 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
    Level+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)+" l")
    StopDrawing()
    FlipBuffers()
     Until KeyboardPushed(#PB_Key_Escape) Or Exit=1
     DeleteFile("Gegner.bmp")
     DeleteFile("Spieler.bmp")
Else
  MessageRequester("Error", "Can't open a 640*480 - 16 bit screen !", 0)
EndIf
End   
Wie es funktioniert:

Der Spieler ist das kleine rote Viereck die Gegner sind die blauen Vierecke. Du musst den blauen Vierecken ausweichen. Es gibt 21 Level und es werden immer mehr Gegner. Die Grafiken erzeugt es im Spiel.
Zusätzlich hat man noch 1000 l Benzin. Beim bewegen vom Spieler zieht es immer Benzin ab. Wenn man 0l Benzin hat, werden 20 Punkte abgezogen und der Tank wird wieder gefüllt.

Steuerung:

Pfeiltasten: Bewegen der Figur

Sonstiges:

Wenn man verloren hat, muss man nur wieder das Programm starten und ist schon wieder im gleichen Level. Das Level und die gesamte Anzahl Punkte werden in die Datei "Optionen.dat" geschrieben. Wenn man wieder von vorne anfangen will, muss man nur die Datei löschen.

Schreibt, wenn etwas nicht funktioniert.

Liebe Grüsse
P. Mathis :mrgreen:
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Verfolger

Beitrag von Kiffi »

> hier mal ein kleines nutzloses Spiel:

was sollen diese Umfragen, die nichts mit den Postings zu tun haben?
Langeweile?
Hygge
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

nutzlos ja, aber so klein is es nich :lol:
is noch witzig :allright:
-.-"
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 »

Vielleicht sollte man die Umfrage verschieben, da sie nichts mit Spiele zu tun hat. Gab's die Umfrage nicht schon mal ? Wenn ja, dann löschen (nur ein Vorschlag)
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 »

Wo bleiben die Antworten??? :? :? :?

LG
P.M. :mrgreen:
Wolf Benrath
Beiträge: 57
Registriert: 04.10.2004 10:20

Beitrag von Wolf Benrath »

Hall PM !

Die Spielidee hört sich gut an ! - Ist sowas wie entis ! ;-)

MfG
Wolf Benrath
Bild
Wolf Benrath
Beiträge: 57
Registriert: 04.10.2004 10:20

Beitrag von Wolf Benrath »

Aber wenn ich das richtig gesehen habe, solltest Du noch eine
Maussteuerung einbauen !

MfG
Wolf Benrath
Bild
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Umfrage (wieder?) gelöscht. Hatte nichts mit dem Thema des Threads zu tun.
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

Hallo,

hier nochmal eine bessere Version von Verfolger:

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(100)
Dim x2.f(100)
Dim y2.f(100)
speed2(1)=1
For I = 2 To 100
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")
zeit=Zeitneu
letzt=1
Pa=1
  Repeat
   ClearScreen(0,0,0)
    ExamineKeyboard()
    ExamineMouse()
    If Pa=0
    zeit-1
      If var$="Tastatur"
    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
    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
    EndIf
    For I = 1 To 100
    If x1 = x2(I)
    If y1 > y2(I)
    y2(I)+Random(7)
    ElseIf y1 < y2(I)
    y2(I)-Random(7)
    EndIf
    Else
    If x1 > x2(I)
    x2(I)+Random(7)
    ElseIf x1 < x2(I)
    x2(I)-Random(7)
    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")
    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 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
    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))
    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")
Else
  MessageRequester("Error", "Can't open a 640*480 - 16 bit screen !", 0)
EndIf
End 
Steuerung:

Bewegen: Maus oder Tastatur (Im Menü wählbar)
Beenden: Esc
Auswahl bestätigen: J
Auswählen: Cursortasten hoch+runter

Tschüss
Pascal :mrgreen:
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

Hallo,

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

Pascal :mrgreen:
Antworten