mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-16 11:52:34 +03:00
02503d625c
git-svn-id: svn://kolibrios.org@8287 a494cfbc-eb01-0410-851d-a64ba20cac60
182 lines
3.8 KiB
Plaintext
182 lines
3.8 KiB
Plaintext
//(C) Artemonische, 2010
|
||
|
||
#pragma option meos
|
||
#include "kolibri.h--" //¯®¤ª«îç ¥¬ ¡¨¡«¨®â¥ªã á KolibriOS API
|
||
|
||
#ifndef AUTOBUILD
|
||
#include "lang.h--"
|
||
#endif
|
||
|
||
#ifdef LANG_RUS
|
||
?define TOP_TEXT_COL 4
|
||
?define TOP_TEXT "‘®¡¥à¨â¥ ¢á¥ ç¨á« ®â 10 ¤® 90 ¯® ¯®à浪ã..."
|
||
?define BOT_LEFT_TEXT_COL 4
|
||
?define BOT_LEFT_TEXT "ˆé¥¬ ç¨á«®: "
|
||
?define BOT_RIGHT_TEXT_COL 162
|
||
?define BOT_RIGHT_TEXT "Žáâ «®áì ©â¨: "
|
||
?define BOT_LEFT_NUMBER_COL 70
|
||
?define BOT_RIGHT_NUMBER_COL 252
|
||
?define F2_TEXT "‡ ®¢® (F2)"
|
||
?define WIN_TEXT "‚ë 諨 ¢á¥ ç¨á« ! :)"
|
||
#else
|
||
?define TOP_TEXT_COL 2
|
||
?define TOP_TEXT "Collect all numbers from 10 to 90 in order..."
|
||
?define BOT_LEFT_TEXT_COL 2
|
||
?define BOT_LEFT_TEXT "Looking for number: "
|
||
?define BOT_RIGHT_TEXT_COL 156
|
||
?define BOT_RIGHT_TEXT "Remains to find: "
|
||
?define BOT_LEFT_NUMBER_COL 116
|
||
?define BOT_RIGHT_NUMBER_COL 252
|
||
?define F2_TEXT " Anew (F2) "
|
||
?define WIN_TEXT "You have found all numbers! :)"
|
||
#endif
|
||
|
||
int find;
|
||
struct {
|
||
int x;
|
||
int y;
|
||
int button_id;
|
||
int mark;
|
||
int text;
|
||
}box[81];
|
||
|
||
#define BUTTON_NEW_GAME 582
|
||
|
||
void main()
|
||
{
|
||
int button,tempi,tempj;
|
||
randomize();
|
||
new_game();
|
||
loop() switch(@WaitEvent())
|
||
{
|
||
case evButton:
|
||
button=@GetButtonID();
|
||
IF (button==1)
|
||
{
|
||
ExitProcess();
|
||
}
|
||
IF (button==BUTTON_NEW_GAME)
|
||
{
|
||
new_game();
|
||
}
|
||
if (button>500) && (button<BUTTON_NEW_GAME) && (box[button-500].text == find)
|
||
{
|
||
box[button-500].mark=2;
|
||
find++;
|
||
IF (find==91)
|
||
{
|
||
draw_window();
|
||
}
|
||
else
|
||
{
|
||
DeleteButton(button);
|
||
tempi=box[button-500].y*30-30;
|
||
tempj=30*box[button-500].x-16;
|
||
DrawBar(tempi,tempj,30,30,0xDCFFDC);
|
||
DrawBar(70,289,16,8,0xDCFFDC);
|
||
DrawBar(252,289,16,8,0xDCFFDC);
|
||
WriteNumber(70,289,0x80,0,find);
|
||
WriteNumber(252,289,0x80,0,90-find+1);
|
||
}
|
||
}
|
||
BREAK;
|
||
case evKey: //¥á«¨ ¯à®¨§®è«® ¦ ⨥ ª« ¢¨è¨ ª« ¢¨ âãà¥
|
||
IF (@GetKey()==051) new_game(); //F2
|
||
BREAK;
|
||
case evReDraw:
|
||
draw_window();
|
||
draw_buttons();
|
||
}
|
||
}
|
||
|
||
void draw_window()
|
||
{
|
||
DefineAndDrawWindow(300,176,280,343,0x34,0xDCFFDC,"FindNumbers");
|
||
DrawBar(0,13,271,1,0x0CFF0C); //«¨¨ï ᢥàåã
|
||
DrawBar(0,285,271,1,0x0CFF0C);
|
||
DrawBar(0,299,271,1,0x0CFF0C); //«¨¨ï ᨧã
|
||
if (find<=90)
|
||
{
|
||
WriteText(TOP_TEXT_COL,4,0x80,0x000000,TOP_TEXT);
|
||
WriteText(BOT_LEFT_TEXT_COL,289,0x80,0x000000,BOT_LEFT_TEXT);
|
||
WriteText(BOT_RIGHT_TEXT_COL,289,0x80,0x000000,BOT_RIGHT_TEXT);
|
||
WriteNumber(BOT_LEFT_NUMBER_COL,289,0x80,0,find);
|
||
WriteNumber(BOT_RIGHT_NUMBER_COL,289,0x80,0,90-find+1);
|
||
DrawNewGameButton(155,300,115,14,0xAFFFAF);
|
||
WriteText(2,304,0x80,0x000000,"Made by Artemonische,2010");
|
||
}
|
||
IF (find==91)
|
||
{
|
||
WriteText(70,100,0x80,0x000000,WIN_TEXT);
|
||
DrawNewGameButton(100,110,70,20,0xE4DFE1);
|
||
}
|
||
}
|
||
|
||
void DrawNewGameButton(dword x,y,width,height,color)
|
||
{
|
||
DefineButton(x,y,width,height,BUTTON_NEW_GAME,color);
|
||
WriteText(-11*6+width/2+x+1,height/2-3+y,0x80,0,F2_TEXT,0);
|
||
}
|
||
|
||
void new_game()
|
||
{
|
||
find=10;
|
||
initialization();
|
||
draw_window();
|
||
draw_buttons();
|
||
}
|
||
|
||
void draw_buttons()
|
||
{
|
||
int i,tempi,tempj;
|
||
FOR (i=1;i<=81;i++)
|
||
{
|
||
IF (box[i].mark==1)
|
||
{
|
||
tempi=box[i].y*30-30;
|
||
tempj=30*box[i].x-16;
|
||
DefineButton(tempi,tempj,29,29,box[i].button_id,0xAFFFAF);
|
||
WriteNumber(tempi+11,tempj+11,0x80,0,box[i].text);
|
||
}
|
||
}
|
||
}
|
||
|
||
void initialization()
|
||
{
|
||
int i,j,t;
|
||
t=0;
|
||
FOR (i=1;i<=9;i++)
|
||
{
|
||
FOR (j=1;j<=9;j++)
|
||
{
|
||
t++;
|
||
box[t].x=j;
|
||
box[t].y=i;
|
||
box[t].mark=1;
|
||
box[t].button_id=500+t;
|
||
box[t].text=Generate(t);
|
||
}
|
||
}
|
||
}
|
||
|
||
int Generate(int xx)
|
||
{
|
||
int temp,k,p;
|
||
p=2;
|
||
WHILE (p==2)
|
||
{
|
||
temp=random(81)+10;
|
||
p=1;
|
||
FOR (k=1; k<xx; k++)
|
||
{
|
||
IF (box[k].text==temp)
|
||
{
|
||
p=2;
|
||
BREAK;
|
||
}
|
||
}
|
||
}
|
||
return temp;
|
||
}
|
||
stop:
|