void showCursor(cursor *c, char *grid, camera *cam, tower *tow) //displays C in the VRAM { textBar name = {2, 54, 124, 10, NULL, 0}; if(grid[c->gridY * GRID_LENGTH + c->gridX] == 0 || grid[c->gridY * GRID_LENGTH + c->gridX] == 6) ML_rectangle(c->gridX*9 - cam->x -1, c->gridY*9 - cam->y - 1, (c->gridX+1)*9 - cam->x - 1, (c->gridY+1)*9 - cam->y - 1, 1, BLACK, TRANSPARENT); else ML_rectangle(c->gridX*9 - cam->x - 1, c->gridY*9 - cam->y - 1, (c->gridX+1)*9 - cam->x - 1, (c->gridY+1)*9 - cam->y - 1, 1, BLACK, CHECKER); if(tow == NULL) return; if(grid[c->gridY * GRID_LENGTH + c->gridX] == 6) { ML_circle(c->gridX*9 - cam->x +4, c->gridY*9-cam->y +4, findTowerXY(c->gridX, c->gridY, tow)->range, CHECKER); name.text = findTowerXY(c->gridX, c->gridY, tow)->name; name.show = 1; showTextBar(&name); } }
int main() { game.Game(); while(scene != STOP) { // transition de changement de scene ML_rectangle(0, 0, 128, 64, 0, ML_BLACK, ML_CHECKER); ML_display_vram(); Sleep(80); switch (scene) { case SCENE_SPACE: Scene_Space scene_space; break; } } unsigned int key; while(1) GetKey(&key); return 1; }
int tableauEleMini(chang) { char buffer[50]; char y; char menu=0; char choix=-1; while(1) { Bdisp_AllClr_DDVRAM(); ML_bmp_or(TABLEAU_MINI,0,0,91,48); choix_famille(choix); // on met en place le choix sur les familles chang=(chang>=118 ? 0 : chang<=-1 ? 117 : chang); y=(chang>55 && chang<71 ? 9 : chang>87 && chang<103 ? 10 : elements[chang].periode); if (chang>55 && chang<71 || chang>87 && chang<103) { ML_rectangle(5*elements[chang].groupe-4,5*y-7,5*elements[chang].groupe-1,5*y-4,0,1,2); } else { ML_rectangle(5*elements[chang].groupe-4,5*y-4,5*elements[chang].groupe-1,5*y-1,0,1,2); } PrintXY(110-3*strlen(elements[chang].symbol),13,elements[chang].symbol,0); sprintf(buffer,"%d",chang+1); // détail des éléments sur la droite PrintMini(110-2*strlen(buffer),5,buffer,0); sprintf(buffer,"%.3f",elements[chang].masse_mol); PrintMini(110-2*strlen(buffer),23,buffer,0); if(menu==0) { Mini("maxi",0); Mini("find",1); Mini("mol",2); Mini("fami",4); Mini("det",5); GetKey(&key); switch(key) { case 79 : case 47 : return chang; case 69 : chang=find(chang); break; case 59 : calcul_mole(); break; case 39 : menu=1; break; case 29 : chang=detailsElement(chang); break; } } else if (menu==1) { Mini("n-me",0); Mini("halo",1); Mini("g-ra",2); Mini("m-ti",3); Mini("m-al",4); Mini(" -->",5); GetKey(&key); switch(key) { case 47 : menu=0; choix=-1; break; case 79 : choix=0; break; case 69 : choix=1; break; case 59 : choix=2; break; case 49 : choix=3; break; case 39 : choix=4; break; case 29 : menu=2; break; // on change dans les 2 menus } } else if (menu==2) { Mini("m-at",0); Mini("lant",1); Mini("acta",2); Mini("m-tr",3); Mini("p-tr",4); Mini(" -->",5); GetKey(&key); switch(key) { case 47 : menu=0; choix=-1;break; case 79 : choix=5; break; case 69 : choix=6; break; case 59 : choix=7; break; case 49 : choix=8; break; case 39 : choix=9; break; case 29 : menu=1; break; // on change dans les 2 menus } } switch(key) // pour les touches principales à chaque fois { case 27 : chang+=1; break; case 38 : chang-=1; break; case 37 : chang=elements[chang].dessous; break; case 28 : chang=elements[chang].dessus; break; case 31 : case 78 : chang=detailsElement(chang); break; } } }
int tableauElement(chang) { short decalx=0,decaly=0; short x,y; short i; while(1) { Bdisp_AllClr_DDVRAM(); chang=(chang>=118 ? 0 : chang<=-1 ? 117 : chang); decalx=-(((12*elements[chang].groupe)-13)*108)/240; // on fait un decalage lorsque l'on bouge decaly=(elements[chang].periode==5 ? -7 : elements[chang].periode>5 ? -14 : 0); for(i=0;i<118;i++) { x=elements[i].groupe; y=(i>55 && i<71 ? 9 : i>87 && i<103 ? 10 : elements[i].periode); PrintMini(12*x+decalx-12,7*y+decaly-6,elements[i].symbol,0); PrintMini(12*3-11+decalx,7*6-7+decaly,"1",0); PrintMini(12*3-11+decalx,7*7-7+decaly,"2",0); PrintMini(12*3-11+decalx,7*9+decaly-5,"1",0); PrintMini(12*3-11+decalx,7*10+decaly-5,"2",0); } if (chang>55 && chang<71) { ML_rectangle(12*elements[chang].groupe-13+decalx,7*9-7+decaly,12*elements[chang].groupe-1+decalx,7*9+decaly,1,1,2); } else if (chang>87 && chang<103) { ML_rectangle(12*elements[chang].groupe-13+decalx,7*10-7+decaly,12*elements[chang].groupe-1+decalx,7*10+decaly,1,1,2); } else { ML_rectangle(12*elements[chang].groupe-13+decalx,7*elements[chang].periode-7+decaly,12*elements[chang].groupe+decalx,7*elements[chang].periode+decaly,1,1,2); } ML_rectangle(0,56,128,64,0,0,0); // on fait un rectangle blanc pour qu'il n'y ait rien Mini("mini",0); Mini("find",1); Mini("mol",2); Mini("sign",3); Mini("det",5); GetKey(&key); switch(key) { case 27 : chang+=1; break; case 38 : chang-=1; break; case 37 : chang=elements[chang].dessous; break; case 28 : chang=elements[chang].dessus; break; case 79 : chang=tableauEleMini(chang); break; case 69 : chang=find(chang); break; case 59 : calcul_mole(); break; case KEY_CTRL_F4 : nb_sign(); break; case 29 : case 31 : case 78 : chang=detailsElement(chang); break; case 47 : return; } } }