Hilfe beim Spiel

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

Beitrag von Kaeru Gaman »

> Das mit den Points klappt momentan nur mit der Break-Bedingung. Dann bricht er immer ab wenn man Berührt. Gibt es da auch irgendwas das er dann wieder von vorne beginnt.

hä?

also, wenn du es so einbaust wie ich gesagt habe, dann lässt er sich einfach nicht weiterbewegen, wenn er an eine Wand stößt.

Break ist eine Anweisung, keine Bedingung.

du hattest weiter oben nichts davon gesagt, dass du eine Aktion auslösen willst, du hast gefragt, wie man die Wände undurchlässig machst.

AUSSERDEM
hast du keinen Piep gesagt, dass du Bilders laden willst, warum haste das nicht früher gemacht,
dann kann man sich den ganzen strumpf mit den Points nämlich SPAREN!


Sorry, vielleicht habe ich heute auch nicht die passende Laune, mir das geduldig anzutun...

Aber ganz grundsätzlich bin ich der Meinung, wie ihr momentan vorgeht bringt euch GARNIX!


irgendwie sich auf die Mitte stürzen und dann mit dem Kopp durch die Wand wird euch keinen Erfolg bringen.

tretet erst mal einen schritt zurück. vergesst euer "spiel" komplett.

fangt an, euch anzuschauen was eine Schleife ist, was Bedingungen sind, was Variablen sind.

lernt diese Grundlagen, ohne dabei an irgendetwas wie ein Spiel zu denken.

und wenn ihr die Grundlagen kennt, wird es euch wesentlich leichter fallen, euer spiel so zu schreiben wie ihr es haben wollt.

wenn ihr vorgestern damit angefangen hättet, diese Grundlagen zu lernen,
könntet ihr morgen anfangen euer Spiel zu schreiben.

also setzt euch jetzt gleich auf eure Hintern und lernt die Grundlagen,
dann könnt ihr Überübermorgen mit dem Game anfangen,
ohne weiterhin zusammenhanglose und wenig fruchtbare Fragen zu stellen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
TeamBaba
Beiträge: 19
Registriert: 26.03.2009 09:46

Beitrag von TeamBaba »

Wo soll ich das den Lernen entweder sind die Tutorials 200 Jahre alt :D
oder sind auf Englisch.... Ich habe erfahrungen in anderen Sprachen, wir dürfen aber nur PureBasic benutzen. Ich kenne es halt nur Objektorientiert bzw. anders. Mir gefällt die Syntax von PureBasic zwar, aber wenn man logisch denkt klappt irgendwie garnichts. Oder hast du ein Tutorial, was auf neuerem Stand ist und KOSTENLOS.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

du siehst mich einigermaßen von den Socken...
bis zu diesem Zeitpunkt ist mir niemals bewußt geworden, dass man Objektorientiert programmieren kann,
ohne den geringsten Schimmer von Schleifen und Bedingungen zu haben.

aber im Grunde nachvollziehbar.
wer sich nur mit Events, Properties und Methoden rumschlägt, braucht niemals eine Schleife oder Bedingung zu verwenden.


für Schleifen und Bedingungen brauchst du kein "aktuelles" Tutorial, da hat sich nichts geändert.
wobei mir allerdings im Moment auch nicht bekannt ist, ob es ein solch grundlegendes Einsteigertut überhaupt gibt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
TeamBaba
Beiträge: 19
Registriert: 26.03.2009 09:46

Beitrag von TeamBaba »

Ok,ok ........
Wir haben uns nochmal verständigt also

1. Es bleibt bei der Box als Figur
2. Keine Sprites

Kaeru Gaman ich finde es super nett von dir, das du dir das antust. Danke.

Bleiben wir bei dem mit den Points() was jetzt von unserer Gruppe festgelegt wurde. Wie vielleicht noch nicht gesagt habe ich dein Beisiel benutzt:
If KeyboardPushed (#PB_Key_Down)
If PunktLU = #Farbe_Hintergrund And PunktRU = #Farbe_Hintergrund
Bally+2
EndIf
EndIf
Leider ist dabei die Spielfigur(Box) beim Berühren der Wände immer eingefroren. Also ich konnte nichts mehr machen
:(
TeamBaba
Beiträge: 19
Registriert: 26.03.2009 09:46

Beitrag von TeamBaba »

Code: Alles auswählen

ClearScreen($000000) 

StartDrawing(ScreenOutput())
BackColor($CCFFFF)
FrontColor(255+256*255+256*256*255) 
 
Box(Ballx,Bally,30,30,#Farbe_Hintergrund)
 Box (80,390,560,10,#Farbe_Hintergrund)
Box (560,310,-560,10,#Farbe_Hintergrund)
Box (0,240,300,10,#Farbe_Hintergrund)
Box (350,240,290,10,#Farbe_Hintergrund)
Box (0,140,580,10,#Farbe_Hintergrund)
Box (80,80,560,10,#Farbe_Hintergrund)
Box (280,0,-280,10,#Farbe_Hintergrund)
Box (340,0,300,10,#Farbe_Hintergrund)
PunktLO = Point( Ballx - 1, Bally - 1 )
PunktRO = Point( Ballx + 30, Bally - 1 )
PunktLU = Point( Ballx - 1, Bally + 30 )
PunktRU = Point( Ballx + 30, Bally + 30 ) 


StopDrawing()
FlipBuffers()
Ballx+BewegungX
Bally+BewegungY

ExamineKeyboard ()
If KeyboardPushed (208)
[b]If PunktLU = #Farbe_Hintergrund And PunktRU = #Farbe_Hintergrund [/b]
Bally+2
EndIf
EndIf 
If KeyboardPushed (200)
[b]If PunktLO = #Farbe_Hintergrund And PunktRO = #Farbe_Hintergrund [/b]
Bally-2
EndIf 
EndIf
If KeyboardPushed (205)
Ballx+2
Bally+0
EndIf
If KeyboardPushed (203)
Ballx-2
bally+0
EndIf


Until Bally>480 Or BallY<0 Or KeyboardPushed (1)
So in diesem Ausschnitt sieht man alles->
Wie man sieht habe ich für die Pfeiltaste nach oben und die Pfeiltaste nach unten schon das Beispiel eingefügt, aber jetzt kann ich die Figur nicht mehr nach oben oder unten bewegen
Crawler
Beiträge: 110
Registriert: 08.02.2009 19:52
Computerausstattung: PB 4.41
Win7 64bit

Beitrag von Crawler »

TeamBaba hat geschrieben:

Code: Alles auswählen

If KeyboardPushed (#PB_Key_Down)
  If PunktLU = #Farbe_Hintergrund And PunktRU = #Farbe_Hintergrund
    Bally+2
  EndIf
EndIf
Leider ist dabei die Spielfigur(Box) beim Berühren der Wände immer eingefroren. Also ich konnte nichts mehr machen
:(
Hast du diesen Abschnitt in allen vier Bewegungsrichtungen eingefügt und vor allem entsprechend angepasst?

[edit] Der Code ist Murks. Erst mal ist da noch immer das chaotische Farbschema. PunktLO bis PunktRU müssen in der Hauptschleife stehen, die du zwar abschließt, jedoch nicht beginnst. Wo ist denn sonst das repeat? Also insgesamt noch nicht ausgegoren, was du da präsentierst.
Kaeru Gaman hat geschrieben:wobei mir allerdings im Moment auch nicht bekannt ist, ob es ein solch grundlegendes Einsteigertut überhaupt gibt.
Oh doch, die gibt es. Zum Beispiel auf http://www.purearea.net
Zuletzt geändert von Crawler am 28.03.2009 15:56, insgesamt 2-mal geändert.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

anscheinend hast du das ja schon passend gemacht beim einsetzen....

lesen kann ich das nicht, weil du immer noch die Zahlen dort verwendest,
anstatt #PB_Key_UP reinzuschreiben wie sich das gehört.
dafür hat man Konstanten, damit man was lesen kann.
.... und btw, die Konstante für die Farbe darf man auch im Clearscreen-Befehl verwenden.
und bitte auch mal einrücken, damit man sehen kann, wo ein Abschnitt anfängt und wo er aufhört.

poste doch mal bitte den kompletten code, also auch mit screen öffnen und allem, damit ich den mal ausprobieren kann, wo etwas hakt...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
TeamBaba
Beiträge: 19
Registriert: 26.03.2009 09:46

Beitrag von TeamBaba »

Ok mache ich
TeamBaba
Beiträge: 19
Registriert: 26.03.2009 09:46

Beitrag von TeamBaba »

Code: Alles auswählen

InitSprite()
InitKeyboard()
  OpenScreen(640,480,16,"Game")


    #Farbe_Hintergrund = $66330
    #Clear_Screen=$000000


  Global Ballx 
  Global Bally
  Global Bewegung
  
      Ballx=560
      BallY=430
      BewegungX=0
      BewegungY=0
      
  Repeat

  ClearScreen(#Clear_Screen) 
  StartDrawing(ScreenOutput())
  FrontColor(255+256*255+256*256*255) 
 
    Box(Ballx,Bally,30,30,#Farbe_Hintergrund)
    Box (80,390,560,10,#Farbe_Hintergrund)
    Box (560,310,-560,10,#Farbe_Hintergrund)
    Box (0,240,300,10,#Farbe_Hintergrund)
    Box (350,240,290,10,#Farbe_Hintergrund)
    Box (0,140,580,10,#Farbe_Hintergrund)
    Box (80,80,560,10,#Farbe_Hintergrund)
    Box (280,0,-280,10,#Farbe_Hintergrund)
    Box (340,0,300,10,#Farbe_Hintergrund)
    
    
      PunktLO = Point( Ballx - 1, Bally - 1 )
      PunktRO = Point( Ballx + 30, Bally - 1 )
      PunktLU = Point( Ballx - 1, Bally + 30 )
      PunktRU = Point( Ballx + 30, Bally + 30 ) 


 StopDrawing()
 FlipBuffers()
 
 
      Ballx+BewegungX
      Bally+BewegungY

ExamineKeyboard ()


If KeyboardPushed (#PB_Key_Down)
   If PunktLU = #Farbe_Hintergrund And PunktRU = #Farbe_Hintergrund 
    
    Bally+2
    
   EndIf
  EndIf

If KeyboardPushed (#PB_Key_Up)
   If PunktLO = #Farbe_Hintergrund And PunktRO = #Farbe_Hintergrund 
    
       Bally-2
    
  EndIf
  EndIf

If KeyboardPushed (#PB_Key_Right)
   If PunktRO = #Farbe_Hintergrund And PunktRU = #Farbe_Hintergrund 
       Ballx+2
    
  EndIf
  EndIf

If KeyboardPushed (#PB_Key_Left)
   If PunktLO = #Farbe_Hintergrund And PunktLU = #Farbe_Hintergrund 
       
       Ballx-2
    
  EndIf
  EndIf 




Until Bally>480 Or BallY<0 Or KeyboardPushed (#PB_Key_Escape)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ohauerha __.__

also, du solltest #Farbe_Hintergund schon als Hintergrund verwenden.
daraus folgt, dass du sie in ClearScreen packen musst,
aber eben nicht für deine Wände verwendest!

so wie es momentan ist, bewegt sich dat Dingen ja überhaupt nicht,
weil eben keiner der checkpunkt die #Farbe_Hintergund hat.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten