//--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" #include "stdio.h" int a[20][20]; // размер карты 20*20 клеток int x=30,y=30; int live=0; int selected=0; class Chuvak { public : // обратить внимание !!! часто забывают public int x,y; int live; } chuvaki[3]; //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { FILE *f; if(f=fopen("C:\\111.txt","r")) { for(int i=0;i<20;i++) { for(int j=0;j<21;j++) // на единицу больше из-за символа конца строки { char t=fgetc(f); switch(t) { case 48 : a[i][j]=0; break; // 48 - код символа 0 case 49 : a[i][j]=1; break; // 49 - код символа 1 case 50 : a[i][j]=2; break; // 50 - код символа 2 } } } } chuvaki[0].x=30; chuvaki[0].y=30; chuvaki[0].live=0; chuvaki[1].x=60; chuvaki[1].y=60; chuvaki[1].live=0; chuvaki[2].x=120; chuvaki[2].y=90; chuvaki[2].live=0; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormPaint(TObject *Sender) { for(int i=0;i<20;i++) { for(int j=0;j<20;j++) { switch(a[i][j]) { case 0 : Form1->Canvas->Brush->Color=clGreen; break; case 1 : Form1->Canvas->Brush->Color=clRed; break; case 2 : Form1->Canvas->Brush->Color=clYellow; break; } Form1->Canvas->Rectangle(i*30,j*30,i*30+30,j*30+30); // 30 = размер клетки в пикселях } } for(int i=0;i<3;i++) { Form1->Canvas->Ellipse(chuvaki[i].x,chuvaki[i].y,chuvaki[i].x+30,chuvaki[i].y+30); // рисуем кругляшок if(i==selected) { Form1->Canvas->Pen->Width=1; Form1->Canvas->Pen->Color=clYellow; Form1->Canvas->Brush->Style=bsClear; Form1->Canvas->Ellipse(chuvaki[i].x,chuvaki[i].y,chuvaki[i].x+30,chuvaki[i].y+30); // рисуем кругляшок Form1->Canvas->Brush->Color=clRed; Form1->Canvas->Brush->Style=bsSolid; Form1->Canvas->Pen->Color=clBlack; Form1->Canvas->Pen->Width=1; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { x=chuvaki[selected].x; y=chuvaki[selected].y; live=chuvaki[selected].live; /////////**///////////////////////////// switch(Key) { case 37 : /// кнопка влево if(a[x/30-1][y/30]!=1) { if(a[x/30-1][y/30]==2) { a[x/30-1][y/30]=0; live++; } // если нашли аптечко прибавилась жизнь x-=30; } break; case 38 : /// кнопка вверх if(a[x/30][y/30-1]!=1) { if(a[x/30][y/30-1]==2) { a[x/30][y/30-1]=0; live++; } // если нашли аптечко прибавилась жизнь y-=30; } break; case 39 : /// кнопка вправо if(a[x/30+1][y/30]!=1) { if(a[x/30+1][y/30]==2) {a[x/30+1][y/30]=0; live++; } // если нашли аптечко прибавилась жизнь x+=30; } break; case 40 : /// кнопка вниз if(a[x/30][y/30+1]!=1) { if(a[x/30][y/30+1]==2) {a[x/30][y/30+1]=0; live++; } // если нашли аптечко прибавилась жизнь y+=30; } break; } /*///////////////////////////////////////**//////////////////// chuvaki[selected].x=x; chuvaki[selected].y=y; chuvaki[selected].live=live; FormPaint(Sender); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { x=int(X/30)*30; y=int(Y/30)*30; for(int i=0;i<3;i++) { if(chuvaki[i].x==x && chuvaki[i].y==y) selected=i; } FormPaint(Sender); } //---------------------------------------------------------------------------