Raumschiff schießt nicht ... (2D)

Posted By: ratz

Raumschiff schießt nicht ... (2D) - 10/02/13 12:40

Hallo.

ich bastel gerade so aus spaß an einem Raumschiff Spiel
wo man einfach nur ein Schiff bewgen kann , welches dann auch schießt

das problem:

der "Schuss" wird icht gezeigt
und ab und ann kommt, dass wenn ich esc drücke
die meldung:
Code:
Script Crash in Space_ship !
 def_exit()


erscheint

hier mein code

Code:
...

TEXT* begin_text=
{
  layer = 1;
  pos_x = 100;
  pos_y = 10;
  font = font_1;
  string (str_1,str_2,str_3,str_4,str_5,str_6,str_7);
  flags = SHOW;
 	
}


TEXT* press_enter=
{
 layer = 1;
 pos_x = 100;
 pos_y = 250;
 font = font_1;
 string ("drücke Enter um fortzufahren");	

}

PANEL* background=
{
 bmap = "b1.bmp";
 pos_x = 0;
 pos_y =	0;
 flags = SHOW;
}
/////////////////////////////////////////////

PANEL* background_2=
{
 bmap = "b2.bmp";
 pos_x = 0;
 pos_y =	0;
}
/////////////////////////////////////////////
var i = 0;

PANEL* ship;
PANEL* shot[50];


function space_ship()
{	
 ship = pan_create("bmap = ship.bmp",5);
 ship.pos_x = 100;
 ship.pos_y = 100;
 
 set(ship,SHOW,OVERLAY);


 while(1)
 {

  if(key_cuu)
  {
  	ship.pos_y --;
  }
  
  if(key_cud)
  {
  	ship.pos_y ++;
  }
  
  if(key_cur)
  {
  	ship.pos_x ++;
  }
  
  if(key_cul)
  {
  	ship.pos_x --;
  }
  
  if (key_space)
  {
  	i++;
   
   shot[i] = pan_create("bmap = shot.bmp",15);
   shot[i].pos_x = ship.pos_x;
   shot[i].pos_y = ship.pos_y +10;
   shot[i].flags |= VISIBLE;
   //set(shot[i],SHOW);
  
   while( shot[i].pos_y < 0)
   {
    shot[i].pos_y --;	
    wait(1);
   }	
  }
  

  wait(1);
 }
}


function start_ini()
{	
 set(background_2,SHOW);	
 space_ship();	
}


function press_enter_()
{
 while(key_enter =! 1)
 {
	
  set(press_enter,SHOW);
  wait(-0.5);
  reset(press_enter,SHOW);
  wait(-0.5);
 } 
}

function main()
{
  vec_set(screen_size,vector(800,400,0));
  vec_set(screen_color,vector(50,1,1)); // dark blue
  vec_set(sky_color,vector(50,1,1)); // dark blue
  video_window(NULL,NULL,0,"My New Game");
  d3d_antialias = 1;
  shadow_stencil = 3;
  
  press_enter_();
  
  while(1)
  {

  if(key_enter == 1)
  {
  	reset(press_enter,SHOW);
   reset(background,SHOW);
   reset(begin_text,SHOW);
   
   start_ini();
  	break; 
 
   }
  wait(1);  
 }
}



was mache ich falsch ????
Posted By: ratz

Re: Raumschiff schießt nicht ... (2D) - 10/02/13 13:00

okey , der schuss ist jetzt sichbar

-> ich hab ihn jetzt als shoot.bmp gespeichert

und den schuss als create_shoot() gemacht

Code:
function create_shoot()
{
 i++;
   
 shot[i] = pan_create("bmap = shoot.bmp",15);
 shot[i].pos_x = ship.pos_x;
 shot[i].pos_y = ship.pos_y +10;
 shot[i].flags |= VISIBLE;
 //set(shot[i],SHOW);
 
 while( shot[i].pos_y > 0)
 {
  shot[i].pos_y --;	
  
  if ( shot[i].pos_y == 0)
  {
  	reset(shot[i],SHOW);
  }
  
  wait(1);
 }	
}



der schuss sollte jetzt aber auch wieder verschwinden ,denn irgentwie
kann ich damit jetzt "malen"
denn der schuss bewegt sich nur solange , wie ich auch die space taste drücke tongue grin
Posted By: Uhrwerk

Re: Raumschiff schießt nicht ... (2D) - 10/02/13 13:01

Überleg doch mal was passiert, wenn Du 51 mal Space gedrückt hast... Und außerdem:
Code:
while(key_enter =! 1)


Das ist eine böse Falle. Überleg mal was damit nicht stimmt.
Posted By: ratz

Re: Raumschiff schießt nicht ... (2D) - 10/02/13 13:11

bei
Code:
while(key_enter =! 1)  //  so richtig? -> !=



habe ich glaub ich den operator falsch geschrieben grin
und statt 1 muss da null hin
Posted By: Uhrwerk

Re: Raumschiff schießt nicht ... (2D) - 10/02/13 13:20

Genau. Du kannst es aber auch noch kürzer und besser lesbarer schreiben:
Code:
while (key_enter) beep();// Piept solange enter gedrückt ist.
while (!key_enter) beep(); // Piept solange enter nicht gedrückt ist.


Viel schlimmer ist aber, was beim 50. Schuss passiert. Den ersten verschenkst Du übrigens...
Posted By: ratz

Re: Raumschiff schießt nicht ... (2D) - 10/02/13 13:27

der schuss bewegt sich immer noch nicht weiter ...
nur wenn ich space drücke

ich guck nochmal später mithilfe von aum 82
Posted By: ratz

Re: Raumschiff schießt nicht ... (2D) - 10/30/13 14:54

so nach langer zeit stelle ich fest , dass ich den POST noch zuende schreiben muss grin

achja ... hier der code (ein raumschiff was schießen kann)

Code:
///////////////////////////////
#include <acknex.h>
#include <default.c>

///////////////////////////////
var i;

function move_ship();
function shoot();

///////////////////
PANEL* background =
{
 bmap = "back1.bmp";
 pos_x = 0;
 pos_y = 0;
 flags = SHOW;	
}


PANEL* _ship =
{
 bmap = "ship.bmp";
 pos_x = 100;
 pos_y = 100;
 flags = SHOW | OVERLAY;	
}

PANEL* _shoot[50];



function main()
{
  vec_set(screen_size,vector(800,400,0));
  vec_set(screen_color,vector(50,1,1)); // dark blue
  vec_set(sky_color,vector(50,1,1)); // dark blue
  video_window(NULL,NULL,0,"My New Game");
  d3d_antialias = 1;
  shadow_stencil = 3;
  level_load(NULL);

  

  move_ship();
}

function move_ship()
{
 while(1)
 {
  //UP	
  if (key_cuu == 1)
  {
  	_ship.pos_y --;
  }
  
  //DOWN
  if (key_cud == 1)
  {
  	_ship.pos_y ++;
  }
 
  //LEFT
  if (key_cul == 1)
  {
  	_ship.pos_x --;
  }
 
  //RIGHT
  if (key_cur == 1)
  {
  	_ship.pos_x ++;
  }
  
  //SPACE && SHOOT == 0
  if ((key_space) &&(!_shoot[i]))
  {
  	i++;
   _shoot[i] = pan_create("bmap = shot.bmp;",1);	
   _shoot[i].pos_x = _ship.pos_x;
   _shoot[i].pos_y = _ship.pos_y;
   _shoot[i].flags = VISIBLE;
  }
  
  //SHOOT EVENT
  if (_shoot[i])
  {
   if (_shoot[i] .pos_y > 5)
   {
    _shoot[i] .pos_y --;
   }
   else
   {
    reset(_shoot[i] , VISIBLE);
    i--;
    _shoot[i]  = NULL;
   }
  }
  
  wait(1);	
 }	
}

© 2023 lite-C Forums