DirectX総合スレat GAMEDEVDirectX総合スレ - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト308:ヘルジャック 04/07/25 16:19 ovE6k6xQ こんな感じに実装したんだけど なんか実行してみると重なりはおかしいまま OBJ **obj_sort(int prio) { OBJ *ObjList[OBJ_MAX];// オブジェワーク OBJ *o = ObjTop; OBJ **OA = ObjList; //オブジェのリストを取る while (o != NULL) { *OA=o; OA++; // リストを進めます o = o->next; } //ソート部分 return BubbleSort(ObjList); } 309:ヘルジャック 04/07/25 16:19 ovE6k6xQ OBJ **BubbleSort(OBJ **o) { OBJ *temp; // ソーティング(Y座標にてソート) for (int i = 0; i < ObjCnt - 1; i++) { int sort = 0; for (int j = 0; j < ObjCnt - i - 1; j++) { if (o[j]->obj_y > o[j + 1]->obj_y) { temp = o[j]; o[j] = o[j + 1]; o[j + 1] = temp; sort++; } } if (sort == 0) break; } return o; } 310:ヘルジャック 04/07/25 16:20 ovE6k6xQ void obj_draw(TASK *t) int x0 = map_x >> 8; // マップのどの位置を表示するか決める int y0 = map_y >> 8; int x1 =((map_x & 0xff) >> 3) & 31; // スクロールのあまり int y1 =((map_y & 0xff) >> 3) & 31; int x,y; int s=0; // オブジェ描写 OBJ *o = ObjTop; OBJ **a; a=obj_sort(0); while (o != NULL) { o=a[s]; s++; if (o->stat==NOW_USE) { x=*o->obj_x+o->dx-(32*x0)-x1;y=*o->obj_y+o->dy-(32*y0)-y1; if(x<640&&y<480&&y+o->h>0&&x+o->w>0)//見えない部分まで描写しない DD_DrawBitmap(x,y, Bitmap[o->tex_no],o->xx,o->yy,(o->xx+o->w),(o->yy+o->h),o->Trans); } // リストを進めます //o = o->next; if(s>=ObjCnt)o=NULL; } } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch