Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2654 → Rev 2655

/programs/games/mcities/mcities.c
0,0 → 1,199
 
#include "system/boolean.h"
#include "system/kolibri.h"
#include "system/stdlib.h"
#include "system/string.h"
#include "system/ctype.h"
 
#include "system/console.c"
 
#include "base.h"
 
#define BASE_LEN 10716
 
char cities_used[BASE_LEN];
int user_current;
char name[256];
char last;
 
///===========================
 
void kol_main();
 
///===========================
 
int _iswhite(char c)
{
return ((' ' == c) || ('\t' == c) || (13 == c) || (10 == c));
}
 
///===========================
 
unsigned char _tolower(unsigned char c)
{
unsigned char x = 0;
 
if ((c == (unsigned char)'ñ')||(c == (unsigned char)'ð'))
return '¥';
 
if ((c > 127) && (c < 144))
x += 32;
 
if ((c > 143) && (c < 160))
x += 80;
 
return c+x;
}
 
///===========================
 
void trim(char string[])
{
int i, j;
 
for (i=0; ;i++)
if ( !_iswhite(string[i]) )
break;
j = 0;
for (;;i++, j++)
{
string[j] = string[i];
if ('\0' == string[i] )
break;
}
 
for (i=0; ;i++)
if ('\0' == string[i])
break;
i--;
for (;i>0;--i)
if ( _iswhite(string[i]) )
string[i] = '\0';
else
break;
}
 
///===========================
 
void game_new()
{
memset(cities_used, 0, BASE_LEN);
user_current = 0;
last = 32;
}
 
///===========================
 
int search(char *city)
{
int i;
for ( i = 0; i < BASE_LEN; i++ )
if ( ! strcmp(cities[i], city) )
return i;
return -1;
}
 
///===========================
 
int last_ok(char c)
{
if ( (c == 'ë')||(c == 'ì'))
return 0;
else
return 1;
}
 
///===========================
 
void kol_main()
{
 
CONSOLE_INIT("mCities by Albom");
 
 
printf("%s", "\
mCities - ¨£à  ¢ £®à®¤ . ‚¥àá¨ï 0.1.\n\
€¢â®à: €«¥ªá ­¤à ®£®¬ § aka Albom (albom85@yandex.ru)\n\n\
\
“¯à ¢«¥­¨¥:\n\
ª®¬ ­¤  * - ­®¢ ï ¨£à \n\
ª®¬ ­¤  ! - ᯨ᮪ ­ §¢ ­­ëå £®à®¤®¢\n\n\
");
 
game_new();
int i, s;
 
for (;;)
{
for (;;)
{
printf("ˆ£à®ª %d > ", user_current+1);
gets(name, 32);
if (*name == 0)
{
_exit(1);
kol_exit();
}
 
trim(name);
 
if (!strcmp(name, "*"))
{
printf("\n\n");
game_new();
continue;
}
 
if (!strcmp(name, "!"))
{
for (i = 0; i < BASE_LEN; i++)
if (cities_used[i] == 1)
printf("%s ", cities[i]);
printf("\n");
continue;
}
 
for (i = 0; i < strlen(name); i++ )
name[i] = _tolower(name[i]);
 
if ( (last!=name[0])&&(last!=32) )
{
printf("ã¦­® ­ §¢ âì £®à®¤ ­  ¡ãª¢ã \'%c\'!\n", last);
continue;
}
s = search(name);
 
if (cities_used[s] == 1)
{
printf("â®â £®à®¤ 㦥 ­ §ë¢ «áï!\n");
continue;
}
 
if ( s == -1 )
printf("¥ §­ î â ª®£® £®à®¤ !\n");
else
{
 
cities_used[s] = 1;
 
if ( last_ok(name[strlen(name)-1]) )
last = name[strlen(name)-1];
else
last = name[strlen(name)-2];
break;
}
}
 
if ( user_current == 0)
user_current = 1;
else
user_current = 0;
 
 
}
 
}
 
///===========================