int main() { _S_MAP_OBJECT ScreenBuf; map_init(&ScreenBuf); map_new(&ScreenBuf,35,17); system("clear"); gotoxy(0,0); double angle=0; for(int i=0;i<35;i++){ angle=(double)i*(180/35); //printf("%f\r\n",sin((i/180)*PI)); double my=sin((angle/180)*PI)*8.0; map_PutTile(&ScreenBuf,i,8+my,1); my=cos((angle/180)*PI)*8; map_PutTile(&ScreenBuf,i,8+my,2); } map_dump(&ScreenBuf,Default_Tilepalete); return 0; }
int main() { _S_MAP_OBJECT screenBuf; map_init(&screenBuf); map_new(&screenBuf,16,16); map_PutTile(&screenBuf,6,5,4); map_PutTile(&screenBuf,5,5,4); map_PutTile(&screenBuf,4,5,4); map_PutTile(&screenBuf,6,6,4); map_PutTile(&screenBuf,5,6,4); map_PutTile(&screenBuf,4,6,4); map_PutTile(&screenBuf,6,7,4); map_PutTile(&screenBuf,5,7,4); map_PutTile(&screenBuf,4,7,4); _S_MAP_OBJECT humanObj; map_init(&humanObj); map_load(&humanObj,"human.dat"); puts("\r\n-------------------------"); map_drawTile_trn(&humanObj,5,5,&screenBuf); map_dump(&screenBuf,Default_Tilepalete); //map_dump(&carObj,Tilepalette); //map_dump(&screenBuffer,Tilepalette); return 0; }
int main() { _S_MAP_OBJECT ScreenBuf; map_init(&ScreenBuf); map_new(&ScreenBuf,35,17); system("clear"); gotoxy(0,0); double startx,starty; double endx,endy; startx = 14; starty = 8; endx = 1; endy = 3; map_PutTile(&ScreenBuf,(int)startx,(int)starty,1); map_PutTile(&ScreenBuf,(int)endx,(int)endy,2); ////방향벡터 구하기 double mx,my; mx = startx; my = starty; double vx = endx - startx; double vy = endy - starty; double c = sqrt(vx*vx+vy*vy); vx /= c; vy /= c; /////////////////////////////////// //for(int i=0;i<8;i++) { while(1) { mx += vx; my += vy; if( (int)mx == (int)endx && (int)my == (int)endy) { break; } map_PutTile(&ScreenBuf,(int)mx,(int)my,5); map_dump(&ScreenBuf,Default_Tilepalete); } return 0; }
int main() { _S_MAP_OBJECT ScreenBuf; map_init(&ScreenBuf); map_new(&ScreenBuf,35,17); system("clear"); gotoxy(0,0); double target_x = 14; double target_y = 4; double center_x = 14; double center_y = 8; map_PutTile(&ScreenBuf,center_x,center_y,5); map_PutTile(&ScreenBuf,target_x,target_y,2); for(int i=0;i<360;i++) { double rad = ((double)i)/180.0 * PI; double tx,ty; tx = (target_x - center_x) * cos(rad) - (target_y - center_y)*sin(rad); ty = (target_x-center_x) * sin(rad) + (target_y - center_y) * cos(rad); tx += center_x; ty += center_y; // printf("%f,%f \r\n",tx,ty); map_PutTile(&ScreenBuf,tx,ty,1); } // for(int i=0;i<35;i++) { // angle = (double) i *( 180 /35) ; // } map_dump(&ScreenBuf,Default_Tilepalete); return 0; }
int main() { char Tilepalette[] = {'.','#','@'}; _S_MAP_OBJECT screenBuffer; map_init(&screenBuffer); map_new(&screenBuffer,16,16); _S_MAP_OBJECT carObj;map_init(&carObj);map_load(&carObj,"car.dat"); puts("\r\n----------------"); { _S_MAP_OBJECT *pObj = &carObj; for(int iy=0;iy < pObj->m_header.m_nHeight;iy++) { for(int ix = 0; ix < pObj->m_header.m_nWidth;ix++) { map_PutTile(&screenBuffer,ix + 5,iy + 5, pObj->m_pBuf[iy*pObj->m_header.m_nWidth + ix]); } } for(int iy=0;iy < pObj->m_header.m_nHeight;iy++) { for(int ix = 0; ix < pObj->m_header.m_nWidth;ix++) { map_PutTile(&screenBuffer,iy+10,ix+10, pObj->m_pBuf[iy*pObj->m_header.m_nWidth + ix]); } } } //map_dump(&carObj,Tilepalette); map_dump(&screenBuffer,Tilepalette); return 0; }
void map_drawTile_mirror_v(_S_MAP_OBJECT *pObj,int posx,int posy,_S_MAP_OBJECT *pTarget) { for(int iy=0;iy < pObj->m_header.m_nHeight;iy++) { for(int ix = 0; ix < pObj->m_header.m_nWidth;ix++) { map_PutTile(pTarget,ix + posx, posy -iy, pObj->m_pBuf[iy*pObj->m_header.m_nWidth + ix]); } } }
void map_drawTile_trn(_S_MAP_OBJECT *pObj, int posx,int posy,_S_MAP_OBJECT *pTarget) { for(int iy=0;iy < pObj->m_header.m_nHeight;iy++) { for(int ix = 0; ix < pObj->m_header.m_nWidth;ix++) { int nPixel = pObj->m_pBuf[iy*pObj->m_header.m_nWidth + ix]; if(nPixel != 0) { map_PutTile(pTarget,ix + posx,iy + posy, pObj->m_pBuf[iy*pObj->m_header.m_nWidth + ix]); } } } }
void map_drawTile(_S_MAP_OBJECT *pObj,int posx,int posy,_S_MAP_OBJECT *pTarget) { // _S_MAP_OBJECT *pObj = &humanObj; // _S_MAP_OBJECT *pTarget = &screenBuf; // int posx = 5; // int posy = 5; for(int iy=0;iy < pObj->m_header.m_nHeight;iy++) { for(int ix = 0; ix < pObj->m_header.m_nWidth;ix++) { map_PutTile(pTarget,ix + posx,iy + posy, pObj->m_pBuf[iy*pObj->m_header.m_nWidth + ix]); } } }
int main() { set_conio_terminal_mode(); acc_tick=last_tick=0; system("clear"); for(int i =0;i<2;i++) //총알 { map_init(&gScreenBuffer[i]); map_new(&gScreenBuffer[i],35,16); } map_init(&gPlayer); map_load(&gPlayer,"plane1.dat"); Plane_init(&gPlayerObject,&gPlayer,17,10); double target_x,target_y; double center_x,center_y; center_x = 14; center_y = 7; target_x = 14; target_y = 3; double angle = 0; while(bLoop) { //타이밍처리 clock_gettime(CLOCK_MONOTONIC,&work_timer); double cur_tick = work_timer.tv_sec + (double)(work_timer.tv_nsec * 1e-9); double delta_tick = cur_tick - last_tick; last_tick = cur_tick; //실시간 입력 if(kbhit() != 0) { char ch = getch(); if(ch == 'q') { bLoop = 0; puts("bye~ \r"); } //Plane_Apply(&gPlayerObject,delta_tick,ch); gPlayerObject.fpApply(&gPlayerObject,delta_tick,ch); } //apply 위치 angle += (delta_tick * 45); double tx,ty; double rad = angle/180.0 * 3.141592; tx = (target_x - center_x) *cos(rad) - (target_y - center_y) * sin(rad); ty = (target_x - center_x) *sin(rad) - (target_y - center_y) * cos(rad); tx += center_x; ty += center_y; //타이밍 계산 acc_tick += delta_tick; if(acc_tick > 0.1) { //puts("tick...\r"); gotoxy(0,0); //map_drawTile(&gScreenBuf[0],0,0,&gScreenBuf[1]); map_drawTile(&gScreenBuffer[0],0,0,&gScreenBuffer[1]); map_PutTile(&gScreenBuffer[1],tx,ty,2); map_PutTile(&gScreenBuffer[1],center_x,center_y,5); map_PutTile(&gScreenBuffer[1],target_x,target_y,1) ; gPlayerObject.fpDraw(&gPlayerObject,&gScreenBuffer[1]); //gotoxy(0,0); //Plane_Draw(&gPlayerObject,&gScreenBuf[1]); //map_dump(&gScreenBuf[1],Default_Tilepalete); map_dump(&gScreenBuffer[1],Default_Tilepalete); acc_tick = 0; } } return 0; }
int main() { set_conio_terminal_mode(); acc_tick = last_tick = 0; for(int i=0;i<2;i++) { map_init(&gScreenBuffer[i]); map_new(&gScreenBuffer[i],35,15); } system("clear"); double target_x,target_y; double center_x,center_y; center_x = 14; center_y = 7; target_x = 14; target_y = 3; double target_x2,target_y2; double center_x2,center_y2; center_x2 = 14; center_y2 = 3; target_x2 = 14; target_y2 = 2; double angle = 0; while(bLoop) { //타이밍 처리 clock_gettime(CLOCK_MONOTONIC, &work_timer); double cur_tick = work_timer.tv_sec + (double)(work_timer.tv_nsec * 1e-9); double delta_tick = cur_tick - last_tick; last_tick = cur_tick; //실시간 입력 if(kbhit() != 0) { char ch = getch(); if(ch == 'q') { bLoop = 0; puts("bye~ \r"); } } ///////////////////////////////// //apply 위치... angle += (delta_tick * 45); double tx,ty; double rad = angle/180 * 3.141592; tx = (target_x-center_x) * cos(rad) - (target_y - center_y)*sin(rad) ; ty = (target_x-center_x) * sin(rad) + (target_y - center_y)*cos(rad) ; tx += center_x; ty += center_y; double tx2,ty2; double rad2 = angle/180 * 3.141592; tx2 = (target_x2-center_x2) * cos(rad2) - (target_y2 - center_y2)*sin(rad2) ; ty2 = (target_x2-center_x2) * sin(rad2) + (target_y2 - center_y2)*cos(rad2) ; tx2 += center_x2; ty2 += center_y2; //타이밍 계산 acc_tick += delta_tick; if(acc_tick > 0.1) { //puts("tick...\r"); map_drawTile(&gScreenBuffer[0],0,0,&gScreenBuffer[1]); map_PutTile(&gScreenBuffer[1],tx,ty,2); map_PutTile(&gScreenBuffer[1],center_x,center_y,5); map_PutTile(&gScreenBuffer[1],target_x,target_y,1); map_PutTile(&gScreenBuffer[1],target_x2,target_y2,3); gotoxy(0,0); map_dump(&gScreenBuffer[1],Default_Tilepalette); acc_tick = 0; } } }
int main() { set_conio_terminal_mode(); acc_tick=last_tick=0; for (int i=0; i<2; i++) { map_init(&gScreenBuffer[i]); map_new(&gScreenBuffer[i],35,15); } map_init(&gMissile); map_load(&gMissile,"plasma.dat"); missile_init(&gMissileObject,0,0,0,&gMissile); system("clear"); //target int targetx, targety; targety = 3; targetx = 2; int fire_x = 24; int fire_y = 12; while(bLoop) { //time process clock_gettime(CLOCK_MONOTONIC,&work_timer); double cur_tick = work_timer.tv_sec + (double)(work_timer.tv_nsec * 1e-9); double delta_tick = cur_tick - last_tick; last_tick = cur_tick; //input if(kbhit() != 0) { char ch = getch(); if(ch == 'q') { bLoop = 0; puts("bye~ \r"); } else if (ch == 'j') { double vx, vy, c; vx = targetx - fire_x; vy = targety - fire_y; c = sqrt(vx*vx + vy*vy); vx /= c; vy /= c; missile_fire(&gMissileObject, fire_x, fire_y, 10.0, vx, vy, 10); } else if (ch == 'a') { targetx -= 1; } else if (ch == 'd') { targetx += 1; } } // apply location missile_apply(&gMissileObject,delta_tick); // time calculate acc_tick += delta_tick; if(acc_tick > 0.1) { //puts("tick...\r"); map_drawTile(&gScreenBuffer[0],0,0,&gScreenBuffer[1]); missile_draw(&gMissileObject,&gScreenBuffer[1]); gotoxy(0,0); map_PutTile(&gScreenBuffer[1],fire_x,fire_y,1); map_PutTile(&gScreenBuffer[1],targetx,targety,5); map_dump(&gScreenBuffer[1],Default_Tilepalete); acc_tick = 0; } } return 0; }
int main() { int bLoop = 1; MapObject.m_header.m_nSkima = 1; MapObject.m_pBuf = NULL; char TilePalette[] = {'.','#','@','%'}; while(bLoop) { char szCmd[32]; gets(szCmd); char *pTemp = strtok(szCmd," "); if(!strcmp(pTemp,"exit")) { bLoop = 0; if ( MapObject.m_pBuf ) { free(MapObject.m_pBuf); } } else if(!strcmp(pTemp,"dump")) { map_dump( &MapObject,TilePalette); } else if(!strcmp(pTemp,"new")) { // new 8 4 int nWidth = atoi(strtok(NULL," ")); int nHeight = atoi(strtok(NULL," ")); map_new( &MapObject,nWidth,nHeight); } else if(!strcmp(pTemp,"put")) { //put 1 2 1 (x y tile_index) int x,y,tile_index; x = atoi(strtok(NULL," ")); y = atoi(strtok(NULL," ")); tile_index = atoi(strtok(NULL," ")); //MapObject.m_pBuf[ y*MapObject.m_header.m_nWidth + x ] = tile_index; map_PutTile(&MapObject,x,y,tile_index); } else if(!strcmp(pTemp,"hline")) { //hline 1 1 (x tile_index) int xpos, tile_index; xpos = atoi(strtok(NULL," ")); tile_index = atoi(strtok(NULL," ")); for(int iy=0;iy<MapObject.m_header.m_nHeight;iy++){ MapObject.m_pBuf[ iy*MapObject.m_header.m_nWidth + xpos ] = tile_index; } } else if(!strcmp(pTemp,"vline")) { int ypos, tile_index; ypos = atoi(strtok(NULL," ")); tile_index = atoi(strtok(NULL," ")); for(int ix=0;ix<MapObject.m_header.m_nWidth;ix++) { MapObject.m_pBuf[ ix + ypos*MapObject.m_header.m_nWidth ] = tile_index; } } else if(!strcmp(pTemp,"save")) { //save filename char *pTemp = strtok(NULL," "); map_save(&MapObject,pTemp); puts("Save OK"); } else if(!strcmp(pTemp,"load")) { //load filename char *pTemp = strtok(NULL," "); map_load(&MapObject,pTemp); puts("Load OK"); } else if(!strcmp(pTemp,"tridraw_1")) { // tridraw_1 1(tile index) int nTileIndex = atoi(strtok(NULL," ")); int nHeight = MapObject.m_header.m_nHeight; int nWidth = MapObject.m_header.m_nWidth; for(int iy=0;iy<nHeight;iy++) { for(int ix=0;(ix<iy) && (ix<nWidth);ix++) { MapObject.m_pBuf[ iy*nWidth +ix ]=nTileIndex; } } } else if(!strcmp(pTemp,"draw_cross")) { //draw_cross 1 2 1 int x,y,tile_index; x = atoi(strtok(NULL," ")); y = atoi(strtok(NULL," ")); tile_index = atoi(strtok(NULL," ")); MapObject.m_pBuf[ y*MapObject.m_header.m_nWidth + x ] = tile_index; MapObject.m_pBuf[ y*MapObject.m_header.m_nWidth + (x+1) ] = tile_index; MapObject.m_pBuf[ y*MapObject.m_header.m_nWidth + (x-1) ] = tile_index; MapObject.m_pBuf[ (y-1)*MapObject.m_header.m_nWidth + x ] = tile_index; MapObject.m_pBuf[ (y+1)*MapObject.m_header.m_nWidth + x ] = tile_index; } } return 0; }
int main() { int bLoop = 1; MapObject.m_header.m_nSkima = 1; MapObject.m_pBuf = NULL; char TilePalette[] = {'.','#','@','%'}; while(bLoop) { char szCmd[32]; gets(szCmd); char *pTemp = strtok(szCmd," "); if(!strcmp(pTemp,"exit")) { bLoop = 0; if( MapObject.m_pBuf ) { free(MapObject.m_pBuf); } } else if(!strcmp(pTemp,"dump")) { map_dump(&MapObject,TilePalette); } else if(!strcmp(pTemp,"new")) { int nWidth = atoi(strtok(NULL," ")); int nHeight = atoi(strtok(NULL," ")); map_new(&MapObject,nWidth,nHeight); } else if(!strcmp(pTemp,"put")) { //put 1 2 2 (x y tile_index) int x,y,tile_index; x = atoi(strtok(NULL," ")); y = atoi(strtok(NULL," ")); tile_index = atoi(strtok(NULL," ")); //MapObject.m_pBuf[y*MapObject.m_header.m_nWidth + x] = tile_index ; map_PutTile(&MapObject,x,y,tile_index); } else if(!strcmp(pTemp,"hline")) { int xpos,tile_index; xpos = atoi(strtok(NULL," ")); tile_index = atoi(strtok(NULL," ")); for(int iy =0;iy <MapObject.m_header.m_nHeight;iy++) { MapObject.m_pBuf[iy*MapObject.m_header.m_nWidth +xpos] = tile_index; } } else if(!strcmp(pTemp,"vline")) { int ypos,tile_index; ypos = atoi(strtok(NULL," ")); tile_index = atoi(strtok(NULL," ")); for(int ix = 0;ix < MapObject.m_header.m_nWidth;ix++) { MapObject.m_pBuf[ix + ypos*MapObject.m_header.m_nWidth] = tile_index; } } else if( !strcmp(pTemp,"save")) { //save filename char *pTemp = strtok(NULL," "); map_save(&MapObject,pTemp); puts("save ok"); } else if( !strcmp(pTemp,"load")) { //load filename char *pTemp = strtok(NULL," "); map_load(&MapObject,pTemp); puts("load ok"); } else if(!strcmp(pTemp,"tridraw_1")) { //tridraw_1 1 int tile_index = atoi(strtok(NULL," ")); for(int y = 0;y < MapObject.m_header.m_nHeight;y++) { for(int x = 0;x < y+1 ;x++) { MapObject.m_pBuf[y*MapObject.m_header.m_nWidth + x] = tile_index; } } } else if(!strcmp(pTemp,"draw_cross")) { //draw_cross 1 2 1 int x,y,tile_index; x = atoi(strtok(NULL," ")); y = atoi(strtok(NULL," ")); tile_index = atoi(strtok(NULL," ")); for(int iy =-1;iy <2;iy++) { for(int ix=-1;ix < 2;ix++) { MapObject.m_pBuf[(iy+y)*MapObject.m_header.m_nHeight + x] = tile_index; MapObject.m_pBuf[y*MapObject.m_header.m_nWidth +(ix+x)] = tile_index; } } } } return 0; }
int main() { set_conio_terminal_mode(); acc_tick=last_tick=0; for (int i=0; i<2; i++) { map_init(&gScreenBuffer[i]); map_new(&gScreenBuffer[i],35,15); } system("clear"); double target_x, target_y; double center_x, center_y; center_x = 14; center_y = 7; target_x = 14; target_y = 3; double angle = 0; while(bLoop) { //time process clock_gettime(CLOCK_MONOTONIC,&work_timer); double cur_tick = work_timer.tv_sec + (double)(work_timer.tv_nsec * 1e-9); double delta_tick = cur_tick - last_tick; last_tick = cur_tick; //input if(kbhit() != 0) { char ch = getch(); if(ch == 'q') { bLoop = 0; puts("bye~ \r"); } } angle += (delta_tick * 45); // angle 45'+ double tx, ty; double rad = angle/180.0 * 3.141592; tx = (target_x - center_x) * cos(rad) - (target_y - center_y) * sin(rad); ty = (target_x - center_x) * sin(rad) - (target_y - center_y) * cos(rad); tx += center_x; ty += center_y; // time calculate acc_tick += delta_tick; if(acc_tick > 1.0) { //puts("tick...\r"); map_drawTile(&gScreenBuffer[0],0,0,&gScreenBuffer[1]); map_PutTile(&gScreenBuffer[1],tx,ty,2); map_PutTile(&gScreenBuffer[1],center_x,center_y,5); map_PutTile(&gScreenBuffer[1],target_x,target_y,1); gotoxy(0,0); map_dump(&gScreenBuffer[1],Default_Tilepalete); acc_tick = 0; } } return 0; }