1 #include "bumprace.h"
2 #include <errno.h>
3 #include <string.h>
4 #include <stdlib.h>
5
6 char Player[10][200];
7 int Hiscore[10],i;
8
OpenOptionsFile(char * mode)9 FILE *OpenOptionsFile( char *mode )
10 {
11 char filename[200];
12 FILE *file;
13
14 if ((char *)getenv("HOME") != NULL)
15 snprintf( filename, sizeof(filename), "%s/.bumprace", getenv("HOME"));
16 else
17 sprintf( filename, "bumprace.dat");
18
19 file = fopen(filename, mode);
20
21 if (file==NULL) {
22 fprintf(stderr, "\nWarning: I could not open the options file ");
23 if (strcmp(mode, "r") == 0)
24 fprintf(stderr, "for read:");
25 else if (strcmp(mode, "w") == 0)
26 fprintf(stderr, "for write:");
27
28 fprintf(stderr, "\n%s\n"
29 "The error that occurred was:\n"
30 "%s\n\n", filename, strerror(errno));
31 }
32
33 return file;
34 }
35
ReadOptions()36 void ReadOptions()
37 {
38 FILE *file;
39
40 file=OpenOptionsFile("r");
41
42 if (file==NULL) {
43 file=OpenOptionsFile("w");
44 if (file==NULL) exit(1);
45
46 fprintf(file, "# BumpRace Options File\n\n");
47 fprintf(file, "Sam\nLion\nBill\nJohn\nAndreas\nAaron\nMichael\nPhoenix\nPierre\nRobert\n");
48 for (i=0;i<10;i++)
49 fprintf(file, "%d\n", 4000-i*400);
50
51 fclose(file);
52 file=OpenOptionsFile("r");
53 }
54
55 fscanf(file, "%*s%*s%*s%*s\n");
56 for (i=0;i<10;i++)
57 fscanf(file, "%199[^\n]\n",Player[i]);
58 for (i=0;i<10;i++)
59 fscanf(file, "%d\n",&Hiscore[i]);
60 // for (i=0;i<10;i++)
61 // printf("%s %d\n",Player[i],Hiscore[i]);
62
63 fclose(file);
64 }
65
FinalScore()66 void FinalScore()
67 {
68 char Name[200]="",text[200];
69 int a;
70 FILE *file;
71
72 if (Score>Hiscore[9]) {
73 Blit(0,0,back);
74 XCenteredString(Screen, 200, "< YOUR FINAL SCORE >");
75 sprintf(text,"%d", Score);
76 XCenteredString(Screen, 250, text);
77 XCenteredString(Screen, 300, "Enter Your Name:");
78 Update();
79 SDL_EventState(SDL_KEYUP, SDL_ENABLE);
80 SDL_EventState(SDL_KEYDOWN, SDL_ENABLE);
81 SFont_Input(Screen, 350, 350, 200, Name);
82 if (strcmp(Name,"")==0) strcpy(Name,"Anonymous Coward");
83 for (i=0;i<10;i++) {
84 if (Score>Hiscore[i]) {
85 // Move other players down on the list
86 for (a=9;a>=i;a--) {
87 strcpy(Player[a],Player[a-1]);
88 Hiscore[a]=Hiscore[a-1];
89 }
90 // add the player
91 strcpy(Player[i],Name);
92 Hiscore[i]=Score;
93 break;
94 }
95 }
96 // for (i=0;i<10;i++)
97 // printf("%s %d\n",Player[i],Hiscore[i]);
98
99 // write everything into the options file
100 file=OpenOptionsFile("w");
101 if (file==NULL) exit(1);
102
103 fprintf(file, "# BumpRace Options File\n\n");
104 for (i=0;i<10;i++)
105 fprintf(file, "%s\n", Player[i]);
106 for (i=0;i<10;i++)
107 fprintf(file, "%d\n", Hiscore[i]);
108
109 fclose(file);
110
111 } else {
112
113 if (Score<0) Score=0;
114 Blit(0,0,back);
115 XCenteredString(Screen, 200, "< YOUR FINAL SCORE >");
116 sprintf(text,"%d", Score);
117 XCenteredString(Screen, 250, text);
118 XCenteredString(Screen, 300, "You didn't qualify for the highscore list...");
119 Update();
120 SDL_EventState(SDL_KEYUP, SDL_ENABLE);
121 SDL_EventState(SDL_KEYDOWN, SDL_ENABLE);
122 SDL_WaitEvent(&event);
123 SDL_WaitEvent(&event);
124 }}
125
ShowHiscore()126 void ShowHiscore()
127 {
128 SDL_Event WaitEvent;
129 char text[200];
130 int i;
131
132 Blit(0,0,back);
133 XCenteredString(Screen, 100, "< BUMPRACE HIGHSCORES >");
134 for (i=0;i<10;i++) {
135 sprintf(text,"%s", Player[i]);
136 PutString(Screen,200,150+i*30,text);
137 sprintf(text,"%d", Hiscore[i]);
138 PutString(Screen,600-SFont_TextWidth(text),150+i*30,text);
139 }
140 Update();
141 while ((WaitEvent.type!=SDL_KEYDOWN)&&(WaitEvent.type!=SDL_MOUSEBUTTONDOWN)) {
142 SDL_PollEvent(&WaitEvent);
143 SDL_WaitEvent(&WaitEvent);
144 }
145 }
146