配列型構造体の数値代入について
Posted: 2015年12月23日(水) 13:16
背景表示の構造体に配列型構造体を使用しているのですが、stbtという名前の構造体の0番以外の配列に値を代入することができずに困っています。原因の究明をしたいので、ソースコードの間違いの指摘をお願いいたします。
#include "../resource/dxlib/DxLib.h"
#include <stdio.h>
#include <math.h>
#include "../header/stageback.h"
#include "../header/mode.h"
#define PI 3.141592
#define STB_MAX 20
#define STBNUM_MAX 21
typedef struct{
float x,y;
float u,v;
}stp_t;
stp_t stp[6]={{-1,1,0,0},{1,1,1,0},{-1,-1,0,1},{1,-1,1,1},{-1,-1,0,1},{1,1,1,0}};
typedef struct{
float x,y,z;
VERTEX3D stbv[6];
}stbc_t;
int stbz;
typedef struct{
int Img;
int Imgsi;
int Imgx1;
int Imgx2;
int Imgy1;
int Imgy2;
int Type;
int sidlo;
float six,siy;
float fromz,toz;
float fadfromz,fadtoz;
float zhaba;
float angl;
int resetf;
stbc_t stbc[STB_MAX];
}stbt_t;
int stbnum;
stbt_t stbt[STBNUM_MAX];
void stbtini(){
if(stbinif==0){
switch(stagemode){
case 1:
break;
case 2:
break;
case 3:
stbt[0].Img=LoadGraph("../プロジェクトファイル/resource/graph/stageback/stage3/water.png");
stbt[0].Imgsi=255;
stbt[0].Imgx1=0;
stbt[0].Imgx2=255;
stbt[0].Imgy1=0;
stbt[0].Imgy2=255;
stbt[0].six=100;
stbt[0].siy=100;
stbt[0].fromz=1500;
stbt[0].fadfromz=1000;
stbt[0].fadtoz=-100;
stbt[0].toz=-200;
stbt[0].Type=1;
stbt[0].sidlo=5;
stbt[0].zhaba=100;
stbnum++;
stbt[1].Img=LoadGraph("../プロジェクトファイル/resource/graph/stageback/stage3/tile.png");
stbt[1].Imgsi=255;
stbt[1].Imgx1=0;
stbt[1].Imgx2=255;
stbt[1].Imgy1=0;
stbt[1].Imgy2=255;
stbt[1].six=100;
stbt[1].siy=100;
stbt[1].fromz=1500;
stbt[1].fadfromz=1000;
stbt[1].fadtoz=-100;
stbt[1].toz=-200;
stbt[1].Type=2;
stbt[1].sidlo=5;
stbt[1].zhaba=100;
stbnum++;
for(int t=0;t<stbnum;t++){
float ou1 = (float)stbt[t].Imgx1 / stbt[t].Imgsi, ou2 = (float)(stbt[t].Imgx2 -stbt[t].Imgx1) / stbt[t].Imgsi;
float ov1 = (float)stbt[t].Imgy1 / stbt[t].Imgsi, ov2 = (float)(stbt[t].Imgy2 -stbt[t].Imgy1) / stbt[t].Imgsi;
switch(stbt[t].Type){
case 0:
break;
case 1:
for(int s=0; stbt[t].fromz+stbt[t].zhaba-s*stbt[t].zhaba>stbt[t].toz;s++){
for(int l=0;l<stbt[t].sidlo;l++){
stbt[t].stbc[stbt[t].sidlo*s+l].x=stbt[t].six*l;
stbt[t].stbc[stbt[t].sidlo*s+l].y=0/*stt[i].fromz+stt[i].siy-t*stt[i].siy*/;
stbt[t].stbc[stbt[t].sidlo*s+l].z=stbt[t].fromz+stbt[t].zhaba-stbt[t].zhaba*s;
for(int i=0;i<6;i++){
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].norm=VGet(0.0f,0.0f,-1.0f);
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].u=ou1+ou2*stp[i].u;
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].v=ov1+ov2*stp[i].v;
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].dif.a=255;
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].dif.r=255;
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].dif.b=255;
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].dif.g=255;
}
}
}looptest++;
break;
case 2:
for(int s=0;stbt[t].fromz+stbt[t].zhaba-s*stbt[t].zhaba>stbt[t].toz;s++){
for(int l=0;l<stbt[t].sidlo;l++){
stbt[t].stbc[stbt[t].sidlo*s+l].x=stbt[t].six*l;
stbt[t].stbc[stbt[t].sidlo*s+l].y=-10/*stt[i].fromz+stt[i].siy-t*stt[i].siy*/;
stbt[t].stbc[stbt[t].sidlo*s+l].z=stbt[t].fromz+stbt[t].zhaba-stbt[t].zhaba*s;
for(int i=0;i<6;i++){
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].norm=VGet(0.0f,0.0f,-1.0f);
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].u=ou1+ou2*stp[i].u;
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].v=ov1+ov2*stp[i].v;
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].dif.a=255;
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].dif.r=255;
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].dif.b=255;
stbt[t].stbc[stbt[t].sidlo*s+l].stbv[i].dif.g=255;
}
}
}looptest++;
break;
}
}
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
case 8:
break;
default :
break;
}
stbinif=1;
}
}