Kleines Spielchen....
- BlueHoschi
- Beiträge: 97
- Registriert: 02.10.2007 07:19
@Xandy
Naja, wenn Du nach 2 Sekunden den Hauptcode verläßt und die Ergebnisse Anzeigst ohne Stopzeit wieder auf einen Wert zu setzen funktioniert es nicht.
Ich würde Dir raten Dein Spiel immer komplett durchzutesten bevor Du es postest. Dann fallen Dir die meisten Gedankenfehler zunächst selbst auf und Du kommst dann vielleicht auch selbst dahinter was fehlt. Mit "If", "Repeat" und solchen Sachen kommst Du doch eigentlich klar, denke ich. Nur die Logik fehlt, weil Du es kaum selbst versuchst.
Damit will ich Dir nicht an´s Bein pissen oder sowas sondern nur raten Dir Zeit zum überlegen zu nehmen. Das lernt auch viel besser als es Andere machen zu lassen.
Nicht böse gemeint, oder sowas.
Naja, wenn Du nach 2 Sekunden den Hauptcode verläßt und die Ergebnisse Anzeigst ohne Stopzeit wieder auf einen Wert zu setzen funktioniert es nicht.
Ich würde Dir raten Dein Spiel immer komplett durchzutesten bevor Du es postest. Dann fallen Dir die meisten Gedankenfehler zunächst selbst auf und Du kommst dann vielleicht auch selbst dahinter was fehlt. Mit "If", "Repeat" und solchen Sachen kommst Du doch eigentlich klar, denke ich. Nur die Logik fehlt, weil Du es kaum selbst versuchst.
Damit will ich Dir nicht an´s Bein pissen oder sowas sondern nur raten Dir Zeit zum überlegen zu nehmen. Das lernt auch viel besser als es Andere machen zu lassen.
Nicht böse gemeint, oder sowas.
Wer Dir Steine in den Weg legt, pflastert den vielleicht.
PB 5.21, Win 7 64 bit
PB 5.21, Win 7 64 bit
Ich teste und spiele mit den Codes seit 3 Tagen rumm.BlueHoschi hat geschrieben:@Xandy
Naja, wenn Du nach 2 Sekunden den Hauptcode verläßt und die Ergebnisse Anzeigst ohne Stopzeit wieder auf einen Wert zu setzen funktioniert es nicht.
Ich würde Dir raten Dein Spiel immer komplett durchzutesten bevor Du es postest. Dann fallen Dir die meisten Gedankenfehler zunächst selbst auf und Du kommst dann vielleicht auch selbst dahinter was fehlt. Mit "If", "Repeat" und solchen Sachen kommst Du doch eigentlich klar, denke ich. Nur die Logik fehlt, weil Du es kaum selbst versuchst.
Damit will ich Dir nicht an´s Bein pissen oder sowas sondern nur raten Dir Zeit zum überlegen zu nehmen. Das lernt auch viel besser als es Andere machen zu lassen.
Nicht böse gemeint, oder sowas.
Ich VERSUCHE alles selbst , nur klappt es eben nicht, da ich kleine fehler übersehe oder sonstiges.
Ich bin ein blutiger anfänger in sachen proggen!
Aber jeder hat mal klein angefange.
Aber so lange es mir spass macht....wieso nicht ?
Ich glaub dir schon das der Code geht nur bei mir nicht ( weil ich es vie. falsch verstanden habe ... )
z.b
Hab grad ne Auto schliesung gemacht. ( also das es nach 10 Sek beendet wird )
Hab mal 30 Sekuden spielzeit gemacht , und siehe da , kein neustart.
- BlueHoschi
- Beiträge: 97
- Registriert: 02.10.2007 07:19
Also gut vielleicht hilft Dir folgendes:
Ich hab´ Dir meine Änderungen immer mit etwas Code von Dir eingerahmt damit Du weißt wohin damit
Code: Alles auswählen
TransparentSpriteColor(#ZAHL6, 0)
NewList Noten.NOTEN()
Anfang:
x = ScreenX / 2
y = ScreenY - SpriteHeight(#MENSCH) + 10
Speed = 5
;/
Stopzeit = ElapsedMilliseconds()
Repeat
Code: Alles auswählen
If KeyboardPushed(#PB_Key_F5)
MessageRequester("Neues Spiel","Neues Spiel neues Glück!", #PB_MessageRequester_Ok )
ClearList(Noten())
MeinePunkte = 0
Neu = 1
EndI
Code: Alles auswählen
Delay(1)
FlipBuffers()
Until Quit Or Neu
If Neu
Goto Anfang
EndIf
If Quit
Wer Dir Steine in den Weg legt, pflastert den vielleicht.
PB 5.21, Win 7 64 bit
PB 5.21, Win 7 64 bit
ich hab den stopbildschirm in eine extra procedur verlegt, dann bleibt der code übersichtlicher 
spielzeit hab ich auf 10 sek eingestellt (#STOPZEIT)
die messagebox hab ich in den screen verlegt und mit einem 5 sek timer ausgerüstet

spielzeit hab ich auf 10 sek eingestellt (#STOPZEIT)
die messagebox hab ich in den screen verlegt und mit einem 5 sek timer ausgerüstet
Code: Alles auswählen
EnableExplicit
Enumeration ; Sprites
#HINTERGRUND
#MENSCH
#Augenlinks
#Augenrechts
#ZAHL1
#ZAHL2
#ZAHL6
EndEnumeration
#STOPZEIT = 10000
;/
Structure NOTEN
x.l
y.l
Art.l
Speed.l
EndStructure
;/
Define Quit, Titel$, MeinePunkte
Titel$ = "Schlechte Noten ? <-->made by AndyX<-->"
;/
Procedure Window()
Protected EventID
Shared Quit
EventID = WindowEvent()
Repeat
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
EventID = WindowEvent()
Until EventID = 0
EndProcedure
;/
Procedure Ende(Text$)
Shared Titel$
MessageRequester (Titel$, Text$)
End
EndProcedure
;/
Procedure StopScreen()
Protected Start, x, y, StartTimer, Init, Zeit
Shared Quit, MeinePunkte
Repeat
Zeit = ElapsedMilliseconds()
Window()
ClearScreen(0)
DisplaySprite(#HINTERGRUND, 0, 0)
DisplayTransparentSprite(#Augenlinks, 530, 200)
DisplayTransparentSprite(#Augenrechts, 0, 200)
ExamineKeyboard()
If KeyboardPushed(#PB_Key_F5)
StartTimer = Zeit + 5000
Init = 1
EndIf
If Init
If StartTimer < Zeit
Start = 1
EndIf
EndIf
If KeyboardPushed(#PB_Key_Escape)
Quit = 1
EndIf
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Transparent)
x = 200
y = 250
If Init
DrawText(x, y, "Neues Spiel neues Glück!", $FFFFFF)
y + 50
DrawText(x, y, "in " + Str((StartTimer - Zeit)/1000) + " sekunden geht's los !", $FFFFFF)
Else
DrawText(x, y, "Wow dein Highscore beträgt "+Str(MeinePunkte)+" Punkte",RGB(250,250,250), RGB(0,0,0))
y + 20
DrawText(x, y, "Nochmal spielen mit F5",RGB(250,250,250), RGB(0,0,0))
y + 20
DrawText(x, y, "Oder spiel durch ESC beendet werden",RGB(250,250,250), RGB(0,0,0))
EndIf
StopDrawing()
Delay(1)
FlipBuffers()
Until Start Or Quit
If Quit
End
EndIf
EndProcedure
;/
Define Zeit, NotenTimer, Stopzeit, ScreenX, ScreenY, x, y, SpielerX, SpielerY
Define testX, testY, Test$, Speed
;/
If Not (InitSprite() And InitKeyboard())
Ende("Init Error")
EndIf
ScreenX = 650
ScreenY = 550
If OpenWindow(0, 0, 0, ScreenX, ScreenY, Titel$, #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If OpenWindowedScreen(WindowID(0), 0, 0, ScreenX, ScreenY, 0, 0, 0)
SetFrameRate(50)
Else
Ende("Screen Error")
EndIf
Else
Ende("Window Error")
EndIf
;/ Startbildschirm
LoadSprite(#HINTERGRUND, "Images\Panorama.bmp",1)
Repeat
Window()
ClearScreen(0)
DisplaySprite(#HINTERGRUND, 0, 0)
ExamineKeyboard()
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Transparent)
x = 80
y = 20
DrawText(x, y, "Ihr müsst versuchen so viele Punkte zu machen wie nur möglich !")
y + 40
DrawText(x, y, "Zur erklärung der Punkte vergabe:")
x + 250
y + 20
DrawText(x, y, "Die 1 gibt 100 Punkte")
y + 20
DrawText(x, y, "Die 2 gibt noch 10 Punkte")
y + 20
DrawText(x, y, "Und die 6 gibt -50 Punkte")
x - 250
y + 50
DrawText(x, y, "Bei jeder nicht gefangenen >1< und jeder >2< werden 25 Punkte abgezogen")
x + 130
y + 300
DrawText(x, y, "Taste drücken, dann geht's los !",RGB(250,250,250), RGB(0,0,0))
StopDrawing()
Delay(1)
FlipBuffers()
Until KeyboardPushed(#PB_Key_All) Or Quit
If Quit
End
EndIf
;/ Spiel
UsePNGImageDecoder()
LoadSprite(#MENSCH,"Images\Spieler.PNG",0)
TransparentSpriteColor(#MENSCH,0)
LoadSprite(#Augenlinks,"Images\Spieler augen links.PNG",0)
TransparentSpriteColor(#Augenlinks, 0)
LoadSprite(#Augenrechts,"Images\Spieler augen rechts.PNG",0)
TransparentSpriteColor(#Augenrechts, 0)
LoadSprite(#ZAHL1,"Images\Note1.PNG",0)
TransparentSpriteColor(#ZAHL1, 0)
LoadSprite(#ZAHL2,"Images\Note2.PNG",1)
TransparentSpriteColor(#ZAHL2, 0)
LoadSprite(#ZAHL6,"Images\Note6.PNG",1)
TransparentSpriteColor(#ZAHL6, 0)
SpielerX = ScreenX / 2
SpielerY = ScreenY - SpriteHeight(#MENSCH) + 10
Speed = 5
NewList Noten.NOTEN()
Stopzeit = ElapsedMilliseconds() + #STOPZEIT
Repeat
Zeit = ElapsedMilliseconds()
If Stopzeit < Zeit
StopScreen()
ClearList(Noten())
MeinePunkte = 0
Stopzeit = ElapsedMilliseconds() + #STOPZEIT
EndIf
Window()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
Quit = 1
EndIf
If KeyboardPushed(#PB_Key_Right)
If SpielerX < ScreenX-120
SpielerX + Speed
EndIf
EndIf
If KeyboardPushed(#PB_Key_Left)
If SpielerX > 0
SpielerX - Speed
EndIf
EndIf
If KeyboardPushed(#PB_Key_A)
testX + 1
EndIf
If KeyboardPushed(#PB_Key_S)
testX - 1
EndIf
; neue noten (alle 500ms)
If NotenTimer < Zeit
NotenTimer = Zeit + 500
AddElement(Noten())
Noten()\x = Random(ScreenX-40)
Noten()\y = - 60
Noten()\Art = #ZAHL1 + Random(2)
Select Noten()\Art
Case #ZAHL1
Noten()\Speed = 10
Case #ZAHL2
Noten()\Speed = 3
Case #ZAHL6
Noten()\Speed = 2
EndSelect
EndIf
ClearScreen(0)
DisplaySprite(#HINTERGRUND, testX, testY)
DisplayTransparentSprite(#MENSCH, SpielerX, SpielerY)
ForEach Noten()
Noten()\y + Noten()\Speed
DisplayTransparentSprite(Noten()\Art, Noten()\x, Noten()\y)
If Noten()\y - SpielerY > -60 And Noten()\y - SpielerY < 120
If Noten()\x - SpielerX > -10 And Noten()\x - SpielerX < 110
Select Noten()\Art
Case #ZAHL1
MeinePunkte + 100
Case #ZAHL2
MeinePunkte + 10
Case #ZAHL6
MeinePunkte - 50
EndSelect
DeleteElement(Noten())
EndIf
ElseIf Noten()\y > ScreenY
Select Noten()\Art
Case #ZAHL1, #ZAHL2
MeinePunkte - 25
Case #ZAHL6
MeinePunkte - 0
EndSelect
DeleteElement(Noten())
EndIf
Next
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor(0)
DrawText(170,0,"Dein Score beträtgt sagenhafte "+Str(MeinePunkte)+" Punkte")
StopDrawing()
Delay(1)
FlipBuffers()
Until Quit
End
PureBasic 4.40 (Windows - x86)
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
Einfach so:
Code: Alles auswählen
DataSection
bild:
IncludeBinary "test.bmp"
EndDataSection
Debug CatchImage(0,?bild)
(\/) (°,,,°) (\/)
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
@whitelion: Mittels IncludeBinary werden die Dateien direkt in die EXE gepackt...
@X360 Andy: Bevor du was fragst gugg immer erst mal in die PB-Hilfe, da steht beim Befehl TextHeight():
Um die Schriftgröße (Und auch Art/Style) zu ändern musst du dir erst eine Schrift (Font) laden:
In diesem Fall wird die Schriftart Arial in der größe 50 und in Fettdruck geladen, und zwar hat sie die ID 1...
Um sie dann anzuwenden musst du bevor du etwas mit DrawText() schreibst einfach
aufrufen wobei die 1 hier wieder für die entsprechende Font steht...
Du kannst also beliebig viele Fonts am Anfang laden und dann während dem Spiel wie Bilder aufrufen und verwenden...
Bei weitern Frag schau doch mal ob du dir vll nich doch mit der PB-Hilfe selber Helfen kannst... Aber wenn du nich weiterkommst wird deine Frage hier natürlich gern beantwortet...
Zur Sache Grafiken einbinden:
Ich finde bei kleinen Programmen hat es Vorteile weil man einfach bloss die EXE hat und nich noch Dateien mit rumgeben muss, aber sobald das Projekt etwas größer wird wird es finde ich umständlicher und auch langsamer (als großes Projekt würde ich was mit mehr als 20 oder 30 Dateien bezeichnen)
Aber das ist wie immer Geschmackssache...
@X360 Andy: Bevor du was fragst gugg immer erst mal in die PB-Hilfe, da steht beim Befehl TextHeight():
Der Befehl gibt dir also nur zurück wie hoch die Schrift ist mit der du gerade schreibst...PB-Hilfe hat geschrieben:Ermittelt die Höhe (in Pixel) des angegebenen String, der auf dem aktuellen Ausgabekanal mittels des aktuellen Zeichensatzes dargestellt wird.
Um die Schriftgröße (Und auch Art/Style) zu ändern musst du dir erst eine Schrift (Font) laden:
Code: Alles auswählen
LoadFont(1,"Arial",50,#PB_Font_Bold)
Um sie dann anzuwenden musst du bevor du etwas mit DrawText() schreibst einfach
Code: Alles auswählen
DrawingFont(FontID(1))
Du kannst also beliebig viele Fonts am Anfang laden und dann während dem Spiel wie Bilder aufrufen und verwenden...
Bei weitern Frag schau doch mal ob du dir vll nich doch mit der PB-Hilfe selber Helfen kannst... Aber wenn du nich weiterkommst wird deine Frage hier natürlich gern beantwortet...
Zur Sache Grafiken einbinden:
Ich finde bei kleinen Programmen hat es Vorteile weil man einfach bloss die EXE hat und nich noch Dateien mit rumgeben muss, aber sobald das Projekt etwas größer wird wird es finde ich umständlicher und auch langsamer (als großes Projekt würde ich was mit mehr als 20 oder 30 Dateien bezeichnen)
Aber das ist wie immer Geschmackssache...
(\/) (°,,,°) (\/)