kolibrios/programs/games/FindNumbers/trunk/FindNumbers.c--
Kirill Lipatov (Leency) 02503d625c FindNumbers: -1 IMG sector
git-svn-id: svn://kolibrios.org@8287 a494cfbc-eb01-0410-851d-a64ba20cac60
2020-12-01 02:29:21 +00:00

182 lines
3.8 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//(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: