8bit vs. 32bit

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

lieber Machete

es gibt ungefähr so viele mögliche fehlerquellen, wie deine exe bytes hat.

es gibt hunderte möglicher ursachen, warum so etwas passieren kann.

wenn du deine exe irgendwo ins web stellen würdest, und man beobachten könnte, wie der fehler auftritt, dann könnte man zumindest ne vermutung äußern, in welcher ecke des codes du suchen musst.

wenn einer von uns nachvollziehen soll, woran es liegt, dann muss man doch in den code gucken, was den fehler verursachen könnte.

das ist doch ganz einfach klar und logisch.

also solange du nicht dich wenigstens genauer äußerst, in welchem ZUSAMMENHANG der fehler auftritt, kann dir wirklich niemand weiterhelfen.


> habe gehofft das das schon mal jemandem passiert ist und er es geschafft hat

ja natürlich, das ist mir schon ein paar mal passiert. aber geschafft habe ich es nur, indem ich meinen code durchgesehen habe, und die fehlerquelle eliminiert habe.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
mknjc
Beiträge: 217
Registriert: 09.09.2006 12:59

Beitrag von mknjc »

Also um ich hier mal anzuschließen:

Poste einfach mal den Code der nach dem Begrüßungstext ausgeführt wird. Natürlich nicht alles ca. 20-30 Zeilen.

Mfg mknjc
Ich nutze PureBasic 4.02 unter Linux und Windows.

Momentane Projekte:
Das geheimste aller geheimen Projekte... FPBC
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

schon mal die pfade überprüft, wo die ganzen grafiken etc rumliegen?

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
Machete @PB
Beiträge: 81
Registriert: 12.09.2006 03:12

Beitrag von Machete @PB »

sorry Jungs ich hab den Pfad falsch gemacht, so konnte es ja nicht gehn :oops: :shock: :(

Danke für die Hilfe, nächstes mal schau ich besser noch ein paar mal mehr bevor ich euch so ungenau voll texte. Sorry für die vergeuteten Nerven von euch
Benutze Topos-PB-Version 3.3
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

WIR HABEN EINEN HELLSEHER :lol:
my pb stuff..
Bild..jedenfalls war das mal so.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@nco2k

:praise: oh sag mir, mächtiger enn-ßie-ouh-tuh-käi, was wird der nächste bug in meinem programm.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

@#NULL
:lol:

@KG
es wird ein invalid memory access error, durch die verwendung von quads. :lol:

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

neeee, sag mal lieber die nächsten Lotto zahlen ;)
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Ich würde jetzt gerne mal das Spiel sehen ;) jetzt wo es funzt kannst Du es ja präsentieren
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
Machete @PB
Beiträge: 81
Registriert: 12.09.2006 03:12

Beitrag von Machete @PB »

Ja ok, aber ich hab da einige Probleme mit den Bossen, vll findet ihr ja den Fehler^^. Ich muss noch ein bisschen an den Gegnern Arbeiten, aber sonst...


If InitSprite() = 0 Or InitPalette(10) = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Can't open DirectX 7 or later", 0)
End
EndIf

Global Level.w
Global Leben.w
Global Punkte.w


Level = 1
Leben = 3


Structure Bullet
x.w
y.w
Width.w
Height.w
Image.w
SpeedX.w
SpeedY.w
EndStructure

NewList Bullet.Bullet()

Structure Bullet2
x.w
y.w
Width.w
Height.w
Image.w
SpeedX.w
SpeedY.w
EndStructure

NewList Bullet2.Bullet2()


Structure Explosion
x.w
y.w
State.w
Delay.w
EndStructure

NewList Explosion.Explosion()


Structure Alien
x.w
y.w
Width.w
Height.w
Speed.w
StartImage.w
EndImage.w
ImageDelay.w
NextImageDelay.w
ActualImage.w
Armor.w
EndStructure

NewList Aliens.Alien()

Structure Boss
x.w
y.w
Width.w
Height.w
Speed.w
StartImage.w
EndImage.w
ImageDelay.w
NextImageDelay.w
ActualImage.w
Armor.w
EndStructure

NewList Boss.Boss()

Procedure AddBullet(Sprite, x, y, SpeedX, SpeedY)
AddElement(Bullet())
Bullet()\x = x
Bullet()\y = y
Bullet()\Width = SpriteWidth(Sprite)
Bullet()\Height = SpriteHeight(Sprite)
Bullet()\Image = Sprite
Bullet()\SpeedX = SpeedX
Bullet()\SpeedY = SpeedY
EndProcedure



MessageRequester("Sers!", "Das ist mein erstes ´Spiel´!"+Chr(10)+"Benutz die Pfeiltasten zum Bewegen und die Leertaste um alle Gegner zu zerstören!!"+Chr(10)+Chr(10)+"Viel Spaß ;-) !", 0)




Path$ = "Data\"


If OpenScreen(1024, 768, 8, "Panzers2d;), BETA")

PlayerSpeedX = 20
PlayerSpeedY = 20


BulletSpeed = 30

LoadSprite(3, Path$+"Player_1.bmp", 0)
LoadSprite(0, Path$+"Player_2.bmp", 0)
LoadSprite(2, Path$+"Player_3.bmp", 0)

LoadSprite( 4, Path$+"Bullet_1.bmp", 0)

LoadSprite(9, Path$+"Boss.bmp", 0)

For k=0 To 5
LoadSprite(k+10, Path$+"Ennemy_3_"+Str(k+1)+".bmp", 0)
Next

For k=0 To 7
LoadSprite(k+20, Path$+"Explosion_"+Str(k+1)+".bmp", 0)
Next


LoadSprite(20, Path$+"Back_3.bmp", 0)


LoadPalette(1, Path$+"Back_3.bmp")
DisplayPalette(1)

SetPriorityClass_(GetCurrentProcess_(), 13);

PlayerWidth = SpriteWidth(3)
PlayerHeight = SpriteHeight(3)
PlayerX = 300
PlayerY = 400

Repeat
FlipBuffers()

If IsScreenActive()
db = 1-db


For BackX=0 To 1024 Step 32
For BackY=-32 To 768 Step 32
DisplaySprite(20, BackX, BackY+ScrollY)
Next
Next

Gosub CheckCollisions

Gosub MovePlayers

Gosub DisplayBullets

Gosub NewAlienWave

Gosub DisplayAliens

Gosub NewBossWave

Gosub DisplayBoss

Gosub DisplayExplosions

If BulletDelay > 0
BulletDelay-1
EndIf

If ScrollDelay = 0
ScrollY+1
ScrollDelay = 0
Else
ScrollDelay-1
EndIf

If ScrollY>31
ScrollY = 0
EndIf

Else

StopSound(-1)
Delay(10)
EndIf

Until KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Waponez II", "Can't open a 640*480 8 bit screen !", 0)
EndIf

End


MovePlayers:
Fire = 0
PlayerImage = 3

ExamineKeyboard()


If KeyboardPushed(#PB_Key_Left)
PlayerX-PlayerSpeedX
PlayerImage = 2
EndIf

If KeyboardPushed(#PB_Key_Right)
PlayerX+PlayerSpeedX
PlayerImage = 0
EndIf

If KeyboardPushed(#PB_Key_Up)
PlayerY-PlayerSpeedY
EndIf

If KeyboardPushed(#PB_Key_Down)
PlayerY+PlayerSpeedY
EndIf

If PlayerX < 0 : PlayerX = 0 : EndIf
If PlayerY < 0 : PlayerY = 0 : EndIf

If PlayerX > 1024-PlayerWidth : PlayerX = 1024-PlayerWidth : EndIf
If PlayerY > 768-PlayerHeight : PlayerY = 768-PlayerHeight : EndIf


If Dead = 1
Punkte = Punkte - 2
AddElement(Explosion())
Explosion()\x = PlayerX
Explosion()\y = PlayerY

Dead = 0
Else
If DeadDelay>0
DeadDelay-1
If db=1
If DeadDelay < 200
DisplayTransparentSprite(PlayerImage, PlayerX, PlayerY)
EndIf
EndIf
Else
DisplayTransparentSprite(PlayerImage, PlayerX, PlayerY)
EndIf
EndIf


If KeyboardPushed(#PB_Key_Space) Or KeyboardPushed(#pb_key_return)

If BulletDelay = 0
If DeadDelay < 100
BulletDelay = 3


AddBullet(4, PlayerX+5 , PlayerY-10, 0 , -BulletSpeed) ; Front bullet (Double bullet sprite)


EndIf
EndIf
EndIf

Return

Repeat
DisplayBullets:

ResetList(Bullet())
While NextElement(Bullet())

If Bullet()\y < 0
DeleteElement(Bullet())
Else
If Bullet()\x < 0
DeleteElement(Bullet())
Else
If Bullet()\x > 1024-Bullet()\Width
DeleteElement(Bullet())
Else
If Bullet()\y > 768
DeleteElement(Bullet())
Else
DisplayTransparentSprite(Bullet()\Image, Bullet()\x, Bullet()\y) ; Display the bullet..

Bullet()\y + Bullet()\SpeedY
Bullet()\x + Bullet()\SpeedX
EndIf
EndIf
EndIf
EndIf

Wend

Return


NewAlienWave:

If AlienDelay = 0

AddElement(Aliens())

If Boss = 1

Aliens()\x = 100
Aliens()\y = -16
Aliens()\Width = SpriteWidth(50)
Aliens()\Height = SpriteHeight(50)
Aliens()\Speed = 3
Aliens()\StartImage = 50
Aliens()\EndImage = 50
Aliens()\ImageDelay = 1
Aliens()\NextImageDelay = 1
Aliens()\ActualImage = 50
Aliens()\Armor = 20

AlienDelay = 1

Else

Aliens()\x = Random(768)
Aliens()\y = -32
Aliens()\Width = SpriteWidth(10)
Aliens()\Height = SpriteHeight(10)
Aliens()\Speed = 3
Aliens()\StartImage = 10
Aliens()\EndImage = 15
Aliens()\ImageDelay = 4
Aliens()\NextImageDelay = Aliens()\ImageDelay
Aliens()\ActualImage = 10
Aliens()\Armor = 5

AlienDelay = Random(30)

EndIf
Else
AlienDelay-1
EndIf


NewBossWave:


If Level = 10 Or Level = 20

AddElement(Boss())

If Boss = 1

Boss()\x = 100
Boss()\y = -16
Boss()\Width = SpriteWidth(50)
Boss()\Height = SpriteHeight(50)
Boss()\Speed = 7
Boss()\StartImage = 50
Boss()\EndImage = 50
Boss()\ImageDelay = 1
Boss()\NextImageDelay = 1
Boss()\ActualImage = 50
Boss()\Armor = 10

BossDelay = 1





BossDelay = 1
Boss()\x = Random(768)
Boss()\y = -32
Boss()\Width = SpriteWidth(10)
Boss()\Height = SpriteHeight(10)
Boss()\Speed = 7
Boss()\StartImage = 10
Boss()\EndImage = 15
Boss()\ImageDelay = 4
Boss()\NextImageDelay = Boss()\ImageDelay
Boss()\ActualImage = 10
Boss()\Armor = 10

BossDelay = Random(Level = Level + 10)


EndIf
Else
BossDelay-1
EndIf


Return


DisplayAliens:

ResetList(Aliens())
While NextElement(Aliens())

DisplayTransparentSprite(Aliens()\ActualImage, Aliens()\x, Aliens()\y)

Aliens()\y + Aliens()\Speed

If Aliens()\NextImageDelay = 0

Aliens()\ActualImage+1

If Aliens()\ActualImage > Aliens()\EndImage
Aliens()\ActualImage = Aliens()\StartImage
EndIf

Aliens()\NextImageDelay = Aliens()\ImageDelay
Else
Aliens()\NextImageDelay-1
EndIf

If Aliens()\Armor <= 0
Punkte = Punkte + 1
AddElement(Explosion())
Explosion()\x = Aliens()\x
Explosion()\y = Aliens()\y


DeleteElement(Aliens())
Else
If Aliens()\y > 768
DeleteElement(Aliens())
Leben = Leben - 1
EndIf
EndIf

Wend
Return


CheckCollisions:

ResetList(Aliens())
While NextElement(Aliens())
ResetList(Bullet())
While NextElement(Bullet())

If SpriteCollision(Bullet()\Image, Bullet()\x, Bullet()\y, Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Aliens()\Armor - 1
DeleteElement(Bullet())
EndIf

Wend

If DeadDelay = 0
If SpriteCollision(PlayerImage, PlayerX, PlayerY, Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Dead = 1
DeadDelay = 200
Leben = Leben - 1
AddElement(Explosion())
Explosion()\x = Aliens()\x
Explosion()\y = Aliens()\y

DeleteElement(Aliens())
EndIf
EndIf

Wend
Return

DisplayBoss:

ResetList(Boss())
While NextElement(Boss())

DisplayTransparentSprite(Boss()\ActualImage, Boss()\x, Boss()\y)

Boss()\y + Boss()\Speed

If Boss()\NextImageDelay = 0

Boss()\ActualImage+1

If Boss()\ActualImage > Boss()\EndImage
Boss()\ActualImage = Boss()\StartImage
EndIf

Boss()\NextImageDelay = Boss()\ImageDelay
Else
Boss()\NextImageDelay-1
EndIf

If Boss()\Armor <= 0
Leben = Leben + 1
Punkte = Punkte + 5
AddElement(Explosion())
Explosion()\x = Boss()\x
Explosion()\y = Boss()\y


DeleteElement(Boss())
Else
If Boss()\y > 768
DeleteElement(Boss())
Leben = Leben - 3
EndIf
EndIf

Wend
Return




ResetList(Boss())
While NextElement(Boss())
ResetList(Bullet())
While NextElement(Bullet())

If SpriteCollision(Bullet()\Image, Bullet()\x, Bullet()\y, Boss()\ActualImage, Boss()\x, Boss()\y)
Boss()\Armor - 1
DeleteElement(Bullet())
EndIf

Wend

If DeadDelay = 0
If SpriteCollision(PlayerImage, PlayerX, PlayerY, Boss()\ActualImage, Boss()\x, Boss()\y)
Dead = 1
DeadDelay = 200
Leben = Leben - 1
AddElement(Explosion())
Explosion()\x = Boss()\x
Explosion()\y = Boss()\y

DeleteElement(Boss())
EndIf
EndIf

Wend
Return


DisplayExplosions:

ResetList(Explosion())
While NextElement(Explosion())


DisplayTransparentSprite(Explosion()\State+20, Explosion()\x, Explosion()\y)

If Explosion()\Delay = 0
If Explosion()\State = 0

EndIf

If Explosion()\State < 7
Explosion()\State+1
Explosion()\Delay = 1
Else
DeleteElement(Explosion())
EndIf
Else
Explosion()\Delay-1
EndIf
Wend

StartDrawing(ScreenOutput())
DrawingMode(1)
Locate(512,1)
FrontColor(0,0,255)
DrawText("Punkte:" + Str(Punkte))
Locate(512,10)
FrontColor(255,0,0)
DrawText("Leben:" + Str(Leben))
Locate(512,20)
FrontColor(0,255,0)
DrawText("Level:" + Str(Level))
StopDrawing()

If (Punkte / 7) + 1 > Level
Level = Level + 1
EndIf



Until KeyboardPushed(1) Or Leben < 1 Or Punkte < 0
Delay(1000)
CloseScreen()
MessageRequester("Game Over", "Du hast " + Str(Punkte) + " Punkte erreicht",0)
Benutze Topos-PB-Version 3.3
Antworten