
Gloomy Nights and Living Dead
Hm, bis auf die Grafikkarte hat sich mein System nicht geändert ... also alles andere steht im Profil ...
Win XP Home Editon; AMD Athlon XP 2,2+; Riva TNT2 32 MB; 768 MB DDR; HDD Maxtor 120 GB
Hm, wenns nicht an der Grafikkarte liegt, woran dann? O_o ...
naja, vielleicht mag mein system auch einfach nur solch eine alte graka nicht ... oder öhm ... *nixweiss*
MFG PMV
Win XP Home Editon; AMD Athlon XP 2,2+; Riva TNT2 32 MB; 768 MB DDR; HDD Maxtor 120 GB

Hm, wenns nicht an der Grafikkarte liegt, woran dann? O_o ...
naja, vielleicht mag mein system auch einfach nur solch eine alte graka nicht ... oder öhm ... *nixweiss*

MFG PMV
Also die gelöschten Posts sind hier nach zu lesen.
Ich werd hier nur mal die letzten zwei Posts noch mal Posten
MFG PMV
Ich werd hier nur mal die letzten zwei Posts noch mal Posten

PMV hat geschrieben:ja öhm ... ne -.- ... vor ner zeit hat ich auch die idee ... aber hab ich bis grad eben gemeint, das TNT2 von neueren Treiberversionen nicht mehr unterstützt werden. Naja nach dem du das angesprochen hast, ab ich mich noch ma auf die nvidia seite gewagt und den ganz neuen Treiber runter geladen ... TNT2 und sogar TNT sind laut Hersteller mit der Treiberversion kompatibel ... aber Hersteller <> SoftwareDarkDragon hat geschrieben:Hast du die neuesten Updates?braucht man.
![]()
Heißt: Wenn ich versuche, die neue offizielle Treiberversion 71.89 zu installieren, sagt mir das Installprogramm, das meine Hardware nicht mit dem gefunden Treiber kompatibel ist und bricht die Installation ab.
ZeHa, welche Version hast du bei deiner TNT2 drauf? Öhm moment ... ich hab jetzt 61.77 drauf ... gibs dazwischen noch offizielle Treiberversionen? ... naja also ne kurze hoffnung hat ich ja jetzt doch, das es am Treiber liegt, aber öhm ... die hoffnung verfliegt grad wieder -.- aber danke für den hinweiß DarkDragon![]()
MFG PMV
Hm, eine alte ... weisst du denn welche? vielleicht ist es ja die rätzels lösung, nen alten Treiber drauf zu machen ... den Treiber, den ich für die TNT2 hab, dürfte etwas zu alt sein, als das ich den sinnvoll nutzten könnte, mal davon abgesehen, das die CD nicht mehr grad die neuste ist ... war aber scho so, wo ich die bekommen hab -.-ZeHa hat geschrieben:Also ich als stolzer Besitzer eines ALDI-PCs hab einfach die Version drauf, die auch auf der beiliegenden Treiber-CD mit drauf istalso auf jeden Fall nix aktualisiertes...
MFG PMV
@ZeHa
Ok besten Dank, habe es versucht, blicke aber nicht ganz durch!
Hier mal der Code:
Ok besten Dank, habe es versucht, blicke aber nicht ganz durch!
Hier mal der Code:
Code: Alles auswählen
Dim MapDaten(10, 10)
Global PlayerX.l, PlayerY.l, PX.f, PY.f
PlayerX = 96
PlayerY = 48
InitSprite()
InitKeyboard()
Procedure Leveleinlesen()
For ArrayY = 1 To 10
For ArrayX = 1 To 10
Read MapDaten(ArrayY, ArrayX)
Next
Next
EndProcedure
Procedure Levelausgeben()
ClearScreen(0, 0, 0)
StartDrawing(ScreenOutput())
For ArrayY = 1 To 10
For ArrayX = 1 To 10
If MapDaten(ArrayY, ArrayX) = 1
Box(ArrayX * 16, ArrayY * 16, 16, 16, RGB(64, 0, 0))
DrawingMode(4)
Box(ArrayX * 16, ArrayY * 16, 16, 16, RGB(112, 0, 0))
DrawingMode(0)
Else
Box(ArrayX * 16, ArrayY * 16, 16, 16, RGB(128, 128, 128))
DrawingMode(4)
Box(ArrayX * 16, ArrayY * 16, 16, 16, RGB(160, 160, 160))
DrawingMode(0)
EndIf
Next
Next
; Spielfigur ausgeben
Box(PlayerX+1, PlayerY+1, 14, 14, RGB(64, 255, 64))
StopDrawing()
EndProcedure
Leveleinlesen()
If OpenWindow(0, 0, 0, 192, 192, 0, "")
If OpenWindowedScreen(WindowID(), 0, 0, 192, 192, 0, 0, 0)
EndIf
EndIf
Levelausgeben()
Repeat
Delay(1)
FlipBuffers()
ExamineKeyboard()
PY = PlayerY / 16
If KeyboardPushed(#PB_Key_Up)
If PlayerY / 16 = Int(PlayerY / 16) And MapDaten(PlayerY / 16, PlayerX / 16) = 0
PlayerY + 1
Else
PlayerY - 1
EndIf
EndIf
If KeyboardPushed(#PB_Key_Down)
If PlayerY / 16 = Int(PlayerY / 16) And MapDaten(PlayerY / 16 + 1, PlayerX / 16) = 0
PlayerY - 1
Else
PlayerY + 1
EndIf
EndIf
If KeyboardPushed(#PB_Key_Left)
If PlayerX / 16 = Int(PlayerX / 16) And MapDaten(PlayerY / 16, PlayerX / 16) = 0
PlayerX + 1
Else
PlayerX - 1
EndIf
EndIf
If KeyboardPushed(#PB_Key_Right)
If PlayerX / 16 = Int(PlayerX / 16) And MapDaten(PlayerY / 16, PlayerX / 16 + 1) = 0
PlayerX - 1
Else
PlayerX + 1
EndIf
EndIf
Levelausgeben()
; FPS -------------------------------------
If fpsstart = 0
fpsstart = ElapsedMilliseconds()
EndIf
fpszaehler + 1
If ElapsedMilliseconds() - fpsstart >= 1000
fps = fpszaehler
fpszaehler = 0
fpsstart = ElapsedMilliseconds()
EndIf
StartDrawing(ScreenOutput())
Locate(0, 0)
FrontColor(255, 255, 255)
DrawingMode(3)
DrawText(" FPS:" + Str(fps) + " Y:" + Str(PlayerY / 16) + "," + Mid(StrF(PY), 1, 4) + " x:" + Str(PlayerX / 16))
StopDrawing()
; -----------------------------------------
Until KeyboardPushed(#PB_Key_Escape)
End
DataSection
Data.l 0,0,0,0,0,0,0,0,0,0
Data.l 0,1,1,0,1,1,1,1,1,0
Data.l 0,0,1,0,1,1,1,0,1,0
Data.l 0,0,1,1,1,1,1,0,1,0
Data.l 0,0,0,0,1,0,0,0,1,0
Data.l 0,0,0,0,1,1,1,1,1,0
Data.l 0,1,1,0,0,0,1,1,1,0
Data.l 0,1,1,1,1,1,1,1,1,0
Data.l 0,1,1,0,0,0,1,1,1,0
Data.l 0,0,0,0,0,0,0,0,0,0
EndDataSection
Ja, es ist in der Tat immer eine Fummelei, aber ich hab's jetzt mal ein wenig korrigiert:
So geht es wunderbar. Jetzt wirst Du auch merken, daß Deine Figur um die Ecken einen "Bogen" macht (so wie bei Pacman), damit Du nicht direkt vor dem Loch stehen mußt, um reinzugehen.
Dies wird mit den Variablen schlecht1 und schlecht2 gemacht. Also wenn Du nun genau auf zwei Blöcke zuläufst, und der linke ist belegt, dann ist der "schlecht". Wenn der rechte frei ist, wird die Richtung umgelenkt auf "rechts", und da Du ja auf der Taste draufbleibst, geht die Figur automatisch in die gewünschte Richtung, sobald sie am Hindernis vorbei ist...
Viel Spaß damit
Code: Alles auswählen
Dim MapDaten(10, 10)
#hoch = 1
#runter = 2
#links = 3
#rechts = 4
Global PlayerX.l, PlayerY.l, PX.f, PY.f
PlayerX = 96
PlayerY = 48
InitSprite()
InitKeyboard()
Procedure Leveleinlesen()
For ArrayY = 1 To 10
For ArrayX = 1 To 10
Read MapDaten(ArrayY, ArrayX)
Next
Next
EndProcedure
Procedure Levelausgeben()
ClearScreen(0, 0, 0)
StartDrawing(ScreenOutput())
For ArrayY = 1 To 10
For ArrayX = 1 To 10
If MapDaten(ArrayY, ArrayX) = 1
Box(ArrayX * 16, ArrayY * 16, 16, 16, RGB(64, 0, 0))
DrawingMode(4)
Box(ArrayX * 16, ArrayY * 16, 16, 16, RGB(112, 0, 0))
DrawingMode(0)
Else
Box(ArrayX * 16, ArrayY * 16, 16, 16, RGB(128, 128, 128))
DrawingMode(4)
Box(ArrayX * 16, ArrayY * 16, 16, 16, RGB(160, 160, 160))
DrawingMode(0)
EndIf
Next
Next
; Spielfigur ausgeben
Box(PlayerX+1, PlayerY+1, 14, 14, RGB(64, 255, 64))
StopDrawing()
EndProcedure
Leveleinlesen()
If OpenWindow(0, 0, 0, 192, 192, 0, "jetzt funktionierts :)")
If OpenWindowedScreen(WindowID(), 0, 0, 192, 192, 0, 0, 0)
EndIf
EndIf
Levelausgeben()
Procedure ExamineControls()
ExamineKeyboard()
If KeyboardPushed(#pb_key_up)
Richtung=#hoch
EndIf
If KeyboardPushed(#pb_key_down)
Richtung=#runter
EndIf
If KeyboardPushed(#pb_key_left)
Richtung=#links
EndIf
If KeyboardPushed(#pb_key_right)
Richtung=#rechts
EndIf
ProcedureReturn Richtung
EndProcedure
Repeat
Delay(1)
FlipBuffers()
Richtung = ExamineControls()
PY = PlayerY / 16
schlecht1=0
schlecht2=0
nx1 = Int(PlayerX / 16)
nx2 = Int((PlayerX + 15) / 16)
ny1 = Int(PlayerY / 16)
ny2 = Int((PlayerY + 15) / 16)
Select Richtung
Case #hoch
If MapDaten(ny2 - 1, nx1)<>1
schlecht1=1
EndIf
If MapDaten(ny2 - 1, nx2)<>1
schlecht2=1
EndIf
If schlecht1=1 And schlecht2=0
Richtung=#rechts
EndIf
If schlecht1=0 And schlecht2=1
Richtung=#links
EndIf
If schlecht1=1 And schlecht2=1
Richtung=0
EndIf
Case #runter
If MapDaten(ny1 + 1, nx1)<>1
schlecht1=1
EndIf
If MapDaten(ny1 + 1, nx2)<>1
schlecht2=1
EndIf
If schlecht1=1 And schlecht2=0
Richtung=#rechts
EndIf
If schlecht1=0 And schlecht2=1
Richtung=#links
EndIf
If schlecht1=1 And schlecht2=1
Richtung=0
EndIf
Case #links
If MapDaten(ny1, nx2 - 1)<>1
schlecht1=1
EndIf
If MapDaten(ny2, nx2 - 1)<>1
schlecht2=1
EndIf
If schlecht1=1 And schlecht2=0
Richtung=#runter
EndIf
If schlecht1=0 And schlecht2=1
Richtung=#hoch
EndIf
If schlecht1=1 And schlecht2=1
Richtung=0
EndIf
Case #rechts
If MapDaten(ny1, nx1 + 1)<>1
schlecht1=1
EndIf
If MapDaten(ny2, nx1 + 1)<>1
schlecht2=1
EndIf
If schlecht1=1 And schlecht2=0
Richtung=#runter
EndIf
If schlecht1=0 And schlecht2=1
Richtung=#hoch
EndIf
If schlecht1=1 And schlecht2=1
Richtung=0
EndIf
EndSelect
Select Richtung
Case #hoch: PlayerY - 1
Case #runter: PlayerY + 1
Case #links: PlayerX - 1
Case #rechts: PlayerX + 1
EndSelect
Levelausgeben()
; FPS -------------------------------------
If fpsstart = 0
fpsstart = ElapsedMilliseconds()
EndIf
fpszaehler + 1
If ElapsedMilliseconds() - fpsstart >= 1000
fps = fpszaehler
fpszaehler = 0
fpsstart = ElapsedMilliseconds()
EndIf
StartDrawing(ScreenOutput())
Locate(0, 0)
FrontColor(255, 255, 255)
DrawingMode(3)
DrawText(" FPS:" + Str(fps) + " Y:" + Str(PlayerY / 16) + "," + Mid(StrF(PY), 1, 4) + " x:" + Str(PlayerX / 16))
StopDrawing()
; -----------------------------------------
Until KeyboardPushed(#PB_Key_Escape)
End
DataSection
Data.l 0,0,0,0,0,0,0,0,0,0
Data.l 0,1,1,0,1,1,1,1,1,0
Data.l 0,0,1,0,1,1,1,0,1,0
Data.l 0,0,1,1,1,1,1,0,1,0
Data.l 0,0,0,0,1,0,0,0,1,0
Data.l 0,0,0,0,1,1,1,1,1,0
Data.l 0,1,1,0,0,0,1,1,1,0
Data.l 0,1,1,1,1,1,1,1,1,0
Data.l 0,1,1,0,0,0,1,1,1,0
Data.l 0,0,0,0,0,0,0,0,0,0
EndDataSection
Dies wird mit den Variablen schlecht1 und schlecht2 gemacht. Also wenn Du nun genau auf zwei Blöcke zuläufst, und der linke ist belegt, dann ist der "schlecht". Wenn der rechte frei ist, wird die Richtung umgelenkt auf "rechts", und da Du ja auf der Taste draufbleibst, geht die Figur automatisch in die gewünschte Richtung, sobald sie am Hindernis vorbei ist...
Viel Spaß damit
