static int read_scores (const char *filename, struct score_entry **scores, ptrdiff_t *count, ptrdiff_t *alloc) { int readval = -1; ptrdiff_t scorecount = 0; ptrdiff_t cursize = 0; struct score_entry *ret = 0; struct score_entry entry; FILE *f = fopen (filename, "r"); int retval = -1; if (!f) return -1; while ((readval = read_score (f, &entry)) == 0) if (push_score (&ret, &scorecount, &cursize, &entry) < 0) return -1; if (readval > 0 && fclose (f) == 0) { *count = scorecount; *alloc = cursize; *scores = ret; retval = 0; } return retval; }
Player build_player(address_space *addr) { uint8_t x = addr->read_byte(RAM_PLAYER_X) - BOARD_MIN_X; uint8_t y = addr->read_byte(RAM_PLAYER_Y) - BOARD_MIN_Y; Point position = { x, y }; uint8_t lives = addr->read_byte(RAM_P1_LIVES); uint32_t score = read_score(addr); Player player = { position, lives, score }; return player; }
static int read_scores (const char *filename, struct score_entry **scores, ptrdiff_t *count, ptrdiff_t *alloc) { char *p, *filedata; ptrdiff_t filesize, nread; struct stat st; FILE *f = fopen (filename, "r"); if (!f) return -1; if (fstat (fileno (f), &st) != 0) return -1; if (! (0 <= st.st_size && st.st_size < min (PTRDIFF_MAX, SIZE_MAX))) { errno = EOVERFLOW; return -1; } filesize = st.st_size; filedata = malloc (filesize + 1); if (! filedata) return -1; nread = fread (filedata, 1, filesize + 1, f); if (filesize < nread) { errno = 0; return -1; } if (nread < filesize) filesize = nread; if (ferror (f) || fclose (f) != 0) return -1; filedata[filesize] = 0; if (strlen (filedata) != filesize) { errno = 0; return -1; } *scores = 0; *count = *alloc = 0; for (p = filedata; p < filedata + filesize; ) { struct score_entry entry; p = read_score (p, &entry); if (!p) { errno = 0; return -1; } if (push_score (scores, count, alloc, &entry) < 0) return -1; } return 0; }
void show_scores() { int i=0; char text_name[25]; char text_score[25]; TTF_Font *MyFont; SDL_Color MyColor = {255,255,255}; SDL_Color MyColor2 = {255,0,0}; SDL_Surface *message = NULL; MyFont = TTF_OpenFont("fonts\\sfont.ttf",20); message = TTF_RenderText_Blended(MyFont,"TEAM NAMES",MyColor2); draw_image(message,screen,NULL,150,170); SDL_FreeSurface(message); message = NULL; message = TTF_RenderText_Blended(MyFont,"SCORES",MyColor2); draw_image(message,screen,NULL,800,170); SDL_FreeSurface(message); message = NULL; read_score(); sort_score(); for(i=0;i<10;++i) { strcpy(text_name,score[i].name); message = TTF_RenderText_Blended(MyFont,text_name,MyColor); draw_image(message,screen,NULL,150,200 + (30 * i)); SDL_FreeSurface(message); message = NULL; itoa(score[i].score,text_score,10); message = TTF_RenderText_Blended(MyFont,text_score,MyColor); draw_image(message,screen,NULL,800,200 + (30 * i)); SDL_FreeSurface(message); message = NULL; } SDL_Flip(screen); TTF_CloseFont(MyFont); SDL_FreeSurface(message); MyFont = NULL; message = NULL; }
Scores::Scores() { read_score(); }