diff collision.cc @ 25:aa37f220b7a8

add new files, not working.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Wed, 24 Nov 2010 19:24:43 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/collision.cc	Wed Nov 24 19:24:43 2010 +0900
@@ -0,0 +1,309 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <SDL.h>
+#include "collision.h"
+
+
+/*** 当たり判定に使うパラメータや変数の定義 ***/
+#if 0
+CHARACTER * atari(CHARACTER *p) 
+  
+  int i1, h, w, ex, ey, charno;
+  int n;
+  ex = p->x;
+  ey = node->xyz[1];
+  charno = p->charano;
+  w = sptable[charno].w;
+  h = sptable[charno].h;
+  //i2 = playerno;
+
+
+/*** 自機やられ ただし無敵時間中で無ければという条件付き ***/
+void
+player_collision(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
+		 SceneGraphPtr tree)
+{
+  if ((ex < jiki.x + 128 / 2) && (ex + w > jiki.x + 128 / 2)
+      && (ey < jiki.y + 128 / 2) && (ey + h > jiki.y + 128 / 2)
+      && jiki.muteki == 0) {
+    //se_voice[0] = SsUtKeyOn(vab[JIKIOUT], 0, 0, 65, 0, 60, 60);
+    Bom(jiki.x + 16, jiki.y + 16);
+    jiki.bf = FALSE;
+    jiki.zanki--;
+    jiki.muteki = 120;
+    
+    infg.stg = 0;
+    infg_level--;
+    if (infg_level < 0) {
+      infg_level = 0;
+    }
+  }
+}
+ 
+//#endif
+ 
+//  if (p->tama == TRUE)
+//  goto jumping;
+ 
+//    for (i1 = 0; i1 < tama_lv1_end + 1; i1++) {
+ 
+/*** tama_lv1_end になるまで ***/
+void
+collision_01(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
+	     SceneGraphPtr tree)
+{
+  if ((tama_lv1[i1].x + 64 + 64 > ex)
+      && (ex + w > tama_lv1[i1].x + 16)
+      && (tama_lv1[i1].y + 128 > ey) && (tama_lv1[i1].y < ey + h)
+      && (tama_lv1[i1].r != -1)) {
+    tama_lv1[i1].r = -1;
+    p->vit -= TAMALV1P;
+    infg.stg++;
+    if (p->vit <= 0) {
+      infg.stg += 4;
+      Bom(node->xyz[0], node->xyz[1]);
+      enemycount += (p->score * ((infg.stg / 128) + infg_level + 1));
+      p->state = delete_chara;
+      p->collision = noaction;
+      p->f = FALSE;
+    }
+  }
+}
+  
+void
+collision_02(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
+	     SceneGraphPtr tree)
+{
+  if ((tama_lv1[i1].x + 64 > ex) && (ex + w > tama_lv1[i1].x)
+      && (tama_lv1[i1].y + 128 > ey) && (tama_lv1[i1].y < ey + h)
+      && (tama_lv1[i1].l != -1)) {
+    tama_lv1[i1].l = -1;
+    p->vit -= TAMALV1P;
+    infg.stg++;
+    if (p->vit <= 0) {
+      infg.stg += 4;
+      Bom(node->xyz[0], node->xyz[1]);
+      enemycount += (p->score *	((infg.stg / 128) + infg_level + 1));
+      p->state = delete_chara;
+      p->collision = noaction;
+      p->f = FALSE;
+    }
+  }
+}
+/*** tama_lv1_end ここまで ***/
+
+// for (i1 = 0; i1 < tama_lv2_end + 1; i1++) {
+
+/*** tama_lv2_end になるまで ***/
+void
+collision_03(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
+	     SceneGraphPtr tree)
+{
+  if ((tama_lv2[i1].x + 128 + 64 > ex)
+      && (ex + w > tama_lv2[i1].x + 128)
+      && (tama_lv2[i1].y + 192 > ey) && (tama_lv2[i1].y < ey + h)
+      && (tama_lv2[i1].rr != -1)) {
+    tama_lv2[i1].rr = -1;
+    p->vit -= TAMALV2P;
+    infg.stg++;
+    if (p->vit <= 0) {
+      infg.stg += 4;
+      Bom(node->xyz[0], node->xyz[1]);
+      enemycount += (p->score * ((infg.stg / 128) + infg_level + 1));
+      p->state = delete_chara;
+      p->collision = noaction;
+      p->f = FALSE;
+    }
+  }
+}
+ 
+void
+collision_04(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
+	     SceneGraphPtr tree)
+{
+  if ((tama_lv2[i1].x + 64 + 64 > ex)
+      && (ex + w > tama_lv2[i1].x + 16)
+      && (tama_lv2[i1].y - 32 + 192 > ey)
+      && (tama_lv2[i1].y - 32 < ey + h)
+      && (tama_lv2[i1].sr != -1)) {
+    tama_lv2[i1].sr = -1;
+    p->vit -= TAMALV2P;
+    infg.stg++;
+    if (p->vit <= 0) {
+      infg.stg += 4;
+      Bom(node->xyz[0], node->xyz[1]);
+      enemycount += (p->score * ((infg.stg / 128) + infg_level + 1));
+      p->state = delete_chara;
+      p->collision = noaction;
+      p->f = FALSE;
+    }
+  }
+}
+
+void
+collision_05(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
+	     SceneGraphPtr tree)
+{
+  if ((tama_lv2[i1].x + 64 > ex) && (ex + w > tama_lv2[i1].x)
+      && (tama_lv2[i1].y - 32 + 192 > ey)
+      && (tama_lv2[i1].y - 32 < ey + h)
+      && (tama_lv2[i1].sl != -1)) {
+    tama_lv2[i1].sl = -1;
+    p->vit -= TAMALV2P;
+    infg.stg++;
+    if (p->vit <= 0) {
+      infg.stg += 4;
+      Bom(node->xyz[0], node->xyz[1]);
+      enemycount += (p->score * ((infg.stg / 128) + infg_level + 1));
+      p->state = delete_chara;
+      p->collision = noaction;
+      p->f = FALSE;
+    }
+  }
+}
+
+void
+collision_06(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
+	     SceneGraphPtr tree)
+{
+  if ((tama_lv2[i1].x - 64 + 64 > ex)
+      && (ex + w > tama_lv2[i1].x - 64)
+      && (tama_lv2[i1].y + 192 > ey) && (tama_lv2[i1].y < ey + h)
+      && (tama_lv2[i1].ll != -1)) {
+    tama_lv2[i1].ll = -1;
+    p->vit -= TAMALV2P;
+    infg.stg++;
+    if (p->vit <= 0) {
+      infg.stg += 4;
+      Bom(node->xyz[0], node->xyz[1]);
+      enemycount += (p->score * ((infg.stg / 128) + infg_level + 1));
+      p->state = delete_chara;
+      p->collision = noaction;
+      p->f = FALSE;
+    }
+  }
+}
+
+/*** tama_lv2_end ここまで ***/
+
+void
+collision_07(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
+	     SceneGraphPtr tree)
+{
+  if ((tlv3[0].r > 0) && (jiki.x < ex + w) && (jiki.x + 128 > ex)
+      && (jiki.y > ey + h)) {
+    p->vit -= TAMALV3P;
+    infg.stg++;
+    if (p->vit <= 0) {
+      infg.stg += 4;
+      Bom(node->xyz[0], node->xyz[1]);
+      enemycount += (p->score * ((infg.stg / 128) + infg_level + 1));
+      p->state = delete_chara;
+      p->collision = noaction;
+      p->f = FALSE;
+    }
+  }
+}
+
+//  jumping:
+
+/*** ObjectのtamaフラグがTRUEの場合 ***/
+
+void
+collision_08(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
+	     SceneGraphPtr tree)
+{
+    if ((tlv3[0].r > 0) && (jiki.x < ex + w) && (jiki.x + 128 > ex)
+	&& (jiki.y + 128 > ey) && (jiki.y < ey + h)) {
+      p->vit -= TAMALV3P;
+      infg.stg++;
+      if (p->vit <= 0) {
+	infg.stg += 4;
+	Bom(node->xyz[0], node->xyz[1]);
+	enemycount += (p->score * ((infg.stg / 128) + infg_level + 1));
+	p->state = delete_chara;
+	p->collision = noaction;
+	p->f = FALSE;
+      }
+    }
+}
+
+/*laser lv1 */
+//  for (i1 = 0; i1 < laser_lv1_end + 1; i1++) {
+//    n = laser_lv1[i1].r * 128 / 4096;
+
+/*** laser_lv1_end になるまで ***/
+
+void
+collision_09(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
+	     SceneGraphPtr tree)
+{   
+  if ((laser_lv1[i1].x + n > ex) && (ex + w > laser_lv1[i1].x)
+      && (laser_lv1[i1].y + n > ey) && (laser_lv1[i1].y < ey + h)
+      && (laser_lv1[i1].r != -1)) {
+    laser_lv1[i1].r = -1;
+    laser_lv1[i1].y = -1;
+    p->vit -= LASERLV1P;
+    infg.stg++;
+    if (p->vit <= 0) {
+      infg.stg += 4;
+      Bom(node->xyz[0], node->xyz[1]);
+      enemycount += (p->score * ((infg.stg / 128) + infg_level + 1));
+      p->state = delete_chara;
+      p->collision = noaction;
+      p->f = FALSE;
+    }
+  }
+}
+/*** laser_lv1_endここまで ***/
+ 
+/*shield(laser lv2) */
+void
+collision_10(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
+	     SceneGraphPtr tree)
+{
+  if ((p->tama == TRUE) && (lg.stg > 0) &&
+      (laser_lv2[0].x + 128 > ex) && (ex + w > laser_lv2[0].x - 128)
+      && (laser_lv2[0].y + 128 > ey) && (laser_lv2[0].y - 128 < ey + h)
+      && (laser_lv2[0].r != 0)) {
+    p->vit -= LASERLV2P;
+    lg.stg -= 26;
+    infg.stg++;
+    if (p->vit <= 0) {
+      infg.stg += 4;
+      Bom(node->xyz[0], node->xyz[1]);
+      enemycount += (p->score * ((infg.stg / 128) + infg_level + 1));
+      p->state = delete_chara;
+      p->collision = noaction;
+      p->f = FALSE;
+    }
+  }
+}
+
+/*bomber(laser lv3) */
+void
+collision_11(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
+	     SceneGraphPtr tree)
+{
+  if (laser_lv3[0].r < 62) {
+    for (i1 = 1; i1 < 128; i1++) {
+      if ((laser_lv3[i1].x + 128 > ex) && (ex + w > laser_lv3[i1].x)
+	  && (laser_lv3[i1].y + 128 > ey)
+	  && (laser_lv3[i1].y < ey + h)
+	  && (laser_lv3[i1].r > 0)) {
+	tama_lv2[i1].rr = -1;
+	p->vit -= LASERLV3P;
+	infg.stg++;
+	if (p->vit <= 0) {
+	  infg.stg += 4;
+	  Bom(node->xyz[0], node->xyz[1]);
+	  enemycount += (p->score * ((infg.stg / 128) + infg_level + 1));
+	  p->state = delete_chara;
+	  p->collision = noaction;
+	  p->f = FALSE;
+	}
+      }
+    }
+  }
+}
+#endif