Type-Problem
Übersicht

cleminatorBetreff: Type-Problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi hab mich die letzten 2 Tage mal mit Types befasst.
Is echt schwierieges Thema phuu, jetzt hab ich mir gedacht ich programmiere einfach mal so eine kliene App mit der man Löcher in die Wand scheißen kann! Mein Probelm ist nur das wenn ich jetzt die Maustaste drücke das Loch in der Wand nur für gaaaaaaaaanz kurze Zeit sichtbar wird. Was muss ich an meinem Code änder? Liebe Grüße Clemens BlitzBasic: [AUSKLAPPEN] Graphics 800,600,16,1 |
||
HW |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Problem ist, dass das Loch nur gezeichnet wird, wenn die Maustaste gedrückt wird. Danach wird es wieder durch Cls gelöscht. Außerdem solltest du die Schüsse nicht in jedem Schleifendurchlauf erstellen. Am besten wäre es, wenn du den Code zum Schuss erstellen in die If Schliefe mit dem Mousehit packst und das Drawimage in eine For Each schuss Scheife stellst. So müsste es besser funktionieren. | ||
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst Doublebuffering aktivieren und du darfst nicht in jeder Schleife einen neuen Type mit dem selben Handle erstelle, denn dann überschreibst du dein letzter erstellter Type. An deiner Stelle würde ich Funktionen nehmen.
Dein Code müsste so aussehen: BlitzBasic: [AUSKLAPPEN] Graphics 800,600,16,1 Zusätzlich habe ich noch die 2 Maustaste mit "integriert" bzw. ResetSchuesse eingebaut. MfG ChEsTeR |
||
cleminator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay danke noch eine frage:
Also in prinzip habe ich mit meinem Code nur die Daten erstellt und noch nicht die Schusslöcher |
||
cleminator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay noch mal ne frage hab hier ein kleines Spiel programmiert, is zwar voll unübersichtlich aber brauch wieder nur eine Antwort bezüglich Types.
BlitzBasic: [AUSKLAPPEN] Graphics 800,600,16,1 so also: Wenn ich jetzt das Spiel starte dann kommen 1000 gegner auf einmal und es werden immer mehr erstellt. ich möchte aber dass zwischen den einzelnen Gegner immer so 3 sekunden oder so abstand ist und dann erst ein neuer erstelle wird. Habs schon versucht beim erstellen eines Gegner eine Variable mit time = Millisecs() zu erstellen und danach die wieder abprüfen mit BlitzBasic: [AUSKLAPPEN] If MilliSecs() > time + 3000 Then ist aber auch nicht gegangen, weiß jemand weiter? |
||
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dein Ansatz ist doch so in Ordnung!
(Ach ja, Seedrnd braucht man nur einmal am Anfang des Programmes mit einer Zufallszahl zu füttern). Läuft es so? (Hab ja deine Bilder nicht, kann es also nicht testen) Code: [AUSKLAPPEN] Graphics 800,600,16,1
SetBuffer BackBuffer() SeedRnd = MilliSecs() ;Laden und Kallibrieren Global menubg = LoadImage("Menubg.bmp") Global menu = LoadImage("menu.bmp") Global bg = LoadImage("bg.bmp") Global ship = LoadImage("ship.bmp") Global rocket = LoadImage("rocket.bmp") Global enemy = LoadImage("gegner.bmp") MaskImage rocket,255,0,255 MaskImage ship,255,0,255 MaskImage menu,0,0,0 MaskImage enemy,255,0,255 MidHandle enemy MidHandle ship MidHandle rocket ;Variablen Global menubgx = 0 Global menubgy = 0 Global bewegungsconst = 2 Global shipx = 400 Global shipy= 550 Global menge = 0 ;Types Type schuss Field x Field y End Type Type gegner Field x Field y Field speed End Type ;Funktionen Global NewEnemyCreateTime Function neuergegner() If NewEnemyCreateTime<Millisecs() g.gegner = New gegner g\x = Rnd(50,700) g\y = 0 g\speed = Rnd(-1,-2) NewEnemyCreateTime = MilliSecs() + 3000 endif End Function Function updategegner() For g.gegner = Each gegner DrawImage enemy,g\x,g\y g\y = g\y - g\speed Next End Function Function neuerschuss() s.schuss = New schuss s\x = shipx s\y = shipy End Function Function updateschuss() For s.schuss = Each schuss DrawImage rocket,s\x,s\y s\y = s\y - 2 Next End Function Function drawmenu_bg() TileImage menubg,menubgx,menubgy menubgx= menubgx + 1 DrawImage menu,0,0 End Function Function shipsteuerung() If KeyDown(203) Then shipx = shipx-5 EndIf If KeyDown(205) Then shipx = shipx+5 EndIf If shipx < 28 shipx = 28 EndIf If shipx > 800-28 shipx = 800-28 EndIf End Function ;Menü Schleife .menu Repeat Cls SeedRnd MilliSecs() drawmenu_bg ;steuerung If KeyHit(59) Then Goto credits EndIf If KeyHit(28) Then Goto spiel EndIf Flip Until KeyHit(1) End ;Credits .credits Repeat Cls Flip Until KeyHit(1) Goto menu ;Spieleschleife .spiel Repeat Cls neuergegner updategegner ;___________ Schiessen If KeyHit(57) Then neuerschuss EndIf updateschuss ;------------- TileImage menubg,menubgx,menubgy menubgy = menubgy + bewegungsconst ;------------- DrawImage ship,shipx,shipy shipsteuerung Flip Until KeyHit(1) Goto menu |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
cleminator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Woa super he! Dankeschön find ich echt toll von euch allen das man hier immer so gute und schnelle Antworten krigt. und Firstdeathmaker: Jop klappt so
lg clemens |
||
cleminator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo, hab noch mal ne Frage zum Obrigen Code!
Also habe gestern noch versucht die Racketen und die Gegner Kollidieren zu lassen, habs mit: BlitzBasic: [AUSKLAPPEN] Function gegner_schuss_collision() Jedes mal wenn ich dann das Prog starte kommt eine Fehlermeldung "Objekt does not exist", wie kann ich die beiden images kollidieren lassen? lg clemens |
||
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
g.gegner\x muss glaub ich eigentlich g\x heissen... der Fehler desshalb, weil er dasobjekt gegner in g nicht findet! | ||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
cleminator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ne geht trotzdem nicht, habs jetzt auf alle Varianten probiert kommt immer der fehler"Object does not exist" und wenn ich statt
s.schuss\x nur s\x eingeb kommt "variable must be a type" komisch net? |
||
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hrhr ich glaub ich habs! Sind die Instanzen von schuss und/oder gegner vielleicht nicht global? Ich mein das ganze ist ja ne Funktion!^^ | ||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es muss s\x heißen. Das "Variable must be a Type" kommt, weil du in der Schleife lediglich den Gegner-Type durchgehst. Du musst auch den schuss in der Schleife definieren. Oder(so würde ich es machen) wenn du den Schuss erstellst schon gleich auf Kollision prüfen.
BlitzBasic: [AUSKLAPPEN]
|
||
cleminator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jo sie waren zwar nicht Global, hat aber immer noch nichts gebracht, mann regt mich das auf! | ||
cleminator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ne funzt immer noch nicht!!!! hmm also ich bin echt ratlos an was es liegen könnte!!! | ||
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok dann versuch mal die Funktionen neuergegner und neuerschuss in neuergegner.gegner und neuerschuss.schuss umzubennenen... mach das gleiche auch mit allen funktionen, welche auf die types zugreifen müssen, dann kannste dir das globalisieren auch sparen...
MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
cleminator hat Folgendes geschrieben: ne funzt immer noch nicht!!!! hmm also ich bin echt ratlos an was es liegen könnte!!!
Könnte evt. daran liegen, dass ich ausversehen sy statt s\y beim Imagescollide. Änder es mal und schau mal, ob es dann funktioniert. |
||
cleminator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nene hab ich schon geändert gehabt, an dem lags auch net, naja. Wie bringt ihr den sonst Bilder die von Types aus gehen zum Kollidieren? kann mir jemand mal n Bsp geben oder so? lg clemens | ||
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN] Graphics 800,600,16,1 Das ist eine kleine Abänderung des Bildzerspringers von BlitzBase.de. Aber ich glaube, als Bsp genügt es. MfG ChEsTeR |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group