Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void ranking(int alternativa, jogador *atual, int pontos){
- FILE *fp;
- int nbytes, nplayers, cont;
- jogador *rank;
- atual.pontuacao=pontos;
- switch(alternativa){
- case 1:
- fp = fopen("rankrock.bin","wb+");
- if(fp == NULL) {
- printf("\nRanking vazio\n\n");
- assert(1);
- }
- nbytes=ftell(fp);
- if(nbytes == 0){
- fwrite(atual.id, sizeof(char)*21, 1, fp);
- fwrite(&pontos, sizeof(int), 1, fp);
- }
- else
- nplayers = nbytes/sizeof(jogador);
- rank=(jogador *)malloc((nplayers+1)*(sizeof(jogador)));
- if(rank==NULL){
- printf("Erro, falta de memoria\n");
- assert(1);
- }
- rank[0]=atual;
- for(cont=1;cont<(nplayers+1);cont++){
- fread(rank[cont].id,sizeof(char)*21, 1, fp);
- fread(&rank[cont].pontuacao,sizeof(int),1,fp);
- }
- bubblesort(rank);
- for(cont=0;cont<10;cont++){
- fwrite(rank[cont].id, sizeof(char)*21, 1, fp);
- fwrite(&rank[cont].pontuacao, sizeof(int), 1, fp);
- }
- fclose(fp);
- free(rank);
- break;
- case 2:
- fp = fopen("rankfunk.bin","wb+");
- if(fp == NULL) {
- printf("\nRanking vazio\n\n");
- assert(1);
- }
- nbytes=ftell(fp);
- if(nbytes == 0){
- fwrite(atual.id, sizeof(char)*21, 1, fp);
- fwrite(&pontos, sizeof(int), 1, fp);
- }
- else
- nplayers = nbytes/sizeof(jogador);
- rank=(jogador *)malloc((nplayers+1)*(sizeof(jogador)));
- if(rank==NULL){
- printf("Erro, falta de memoria\n");
- assert(1);
- }
- rank[0]=atual;
- for(cont=1;cont<(nplayers+1);cont++){
- fread(rank[cont].id,sizeof(char)*21, 1, fp);
- fread(&rank[cont].pontuacao,sizeof(int),1,fp);
- }
- bubblesort(rank);
- for(cont=0;cont<10;cont++){
- fwrite(rank[cont].id, sizeof(char)*21, 1, fp);
- fwrite(&rank[cont].pontuacao, sizeof(int), 1, fp);
- }
- fclose(fp);
- free(rank);
- break;
- case 3:
- fp = fopen("rankMPB.bin","wb+");
- if(fp == NULL) {
- printf("\nRanking vazio\n\n");
- assert(1);
- }
- nbytes=ftell(fp);
- if(nbytes == 0){
- fwrite(atual.id, sizeof(char)*21, 1, fp);
- fwrite(&pontos, sizeof(int), 1, fp);
- }
- else
- nplayers = nbytes/sizeof(jogador);
- rank=(jogador *)malloc((nplayers+1)*(sizeof(jogador)));
- if(rank==NULL){
- printf("Erro, falta de memoria\n");
- assert(1);
- }
- rank[0]=atual;
- for(cont=1;cont<(nplayers+1);cont++){
- fread(rank[cont].id,sizeof(char)*21, 1, fp);
- fread(&rank[cont].pontuacao,sizeof(int),1,fp);
- }
- bubblesort(rank);
- for(cont=0;cont<10;cont++){
- fwrite(rank[cont].id, sizeof(char)*21, 1, fp);
- fwrite(&rank[cont].pontuacao, sizeof(int), 1, fp);
- }
- fclose(fp);
- free(rank);
- break;
- case 4:
- fp = fopen("rankPOP.bin","wb+");
- if(fp == NULL) {
- printf("\nRanking vazio\n\n");
- assert(1);
- }
- nbytes=ftell(fp);
- if(nbytes == 0){
- fwrite(atual.id, sizeof(char)*21, 1, fp);
- fwrite(&pontos, sizeof(int), 1, fp);
- }
- else
- nplayers = nbytes/sizeof(jogador);
- rank=(jogador *)malloc((nplayers+1)*(sizeof(jogador)));
- if(rank==NULL){
- printf("Erro, falta de memoria\n");
- assert(1);
- }
- rank[0]=atual;
- for(cont=1;cont<(nplayers+1);cont++){
- fread(rank[cont].id,sizeof(char)*21, 1, fp);
- fread(&rank[cont].pontuacao,sizeof(int),1,fp);
- }
- bubblesort(rank);
- for(cont=0;cont<10;cont++){
- fwrite(rank[cont].id, sizeof(char)*21, 1, fp);
- fwrite(&rank[cont].pontuacao, sizeof(int), 1, fp);
- }
- fclose(fp);
- free(rank);
- break;
- }
- fp = fopen("rankgeral.bin","wb+");
- if(fp == NULL) {
- printf("\nRanking vazio\n\n");
- assert(1);
- }
- nbytes=ftell(fp);
- if(nbytes == 0){
- fwrite(atual.id, sizeof(char)*21, 1, fp);
- fwrite(&pontos, sizeof(int), 1, fp);
- }
- else
- nplayers = nbytes/sizeof(jogador);
- rank=(jogador *)malloc((nplayers+1)*(sizeof(jogador)));
- if(rank==NULL){
- printf("Erro, falta de memoria\n");
- assert(1);
- }
- rank[0]=atual;
- for(cont=1;cont<(nplayers+1);cont++){
- fread(rank[cont].id,sizeof(char)*21, 1, fp);
- fread(&rank[cont].pontuacao,sizeof(int),1,fp);
- }
- bubblesort(rank);
- for(cont=0;cont<10;cont++){
- fwrite(rank[cont].id, sizeof(char)*21, 1, fp);
- fwrite(&rank[cont].pontuacao, sizeof(int), 1, fp);
- }
- fclose(fp);
- free(rank);
- limpatela();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement