praktika-cpp-2PO07/Крестики-Нолики/Unit1.cpp
2024-03-02 18:17:55 +02:00

99 lines
3.2 KiB
C++

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int keyy;
bool isZero = false;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void drawZeroOrX(int x, int y) {
if(isZero) {
Form1->Canvas->Ellipse(
x*(Form1->ClientWidth/3), y*(Form1->ClientHeight/3),
x*(Form1->ClientWidth/3)+(Form1->ClientWidth/3), y*(Form1->ClientHeight/3)+(Form1->ClientHeight/3)
);
}else{
Form1->Canvas->MoveTo(x*(Form1->ClientWidth/3), y*(Form1->ClientHeight/3));
Form1->Canvas->LineTo(x*(Form1->ClientWidth/3)+(Form1->ClientWidth/3), y*(Form1->ClientHeight/3)+(Form1->ClientHeight/3));
Form1->Canvas->MoveTo(x*(Form1->ClientWidth/3)+(Form1->ClientWidth/3), y*(Form1->ClientHeight/3));
Form1->Canvas->LineTo(x*(Form1->ClientWidth/3), y*(Form1->ClientHeight/3)+(Form1->ClientHeight/3));
}
isZero=!isZero;
}
void __fastcall TForm1::FormPaint(TObject *Sender)
{
TRect aRect = Rect(0,0,ClientWidth,ClientHeight);
Canvas->Brush->Color=(TColor)0xffffff;
Canvas->FillRect(aRect);
for(int i=1; i<3; i++) {
Canvas->MoveTo(i*ClientWidth/3,0);
Canvas->LineTo(i*ClientWidth/3,ClientHeight);
}
for(int i=1; i<3; i++) {
Canvas->MoveTo(0, i*ClientHeight/3);
Canvas->LineTo(ClientWidth,i*ClientHeight/3);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
//UL
if((X<ClientWidth/3) && (Y<ClientHeight/3)) {
drawZeroOrX(0,0);
}
//US
else if((X>ClientWidth/3) && (X<2*ClientWidth/3) && (Y<ClientHeight/3)) {
drawZeroOrX(1,0);
}
//UR
else if((X>2*ClientWidth/3) && (Y<ClientHeight/3)) {
drawZeroOrX(2,0);
}
//SL
if((X<ClientWidth/3) && (Y>ClientHeight/3) && (Y<2*ClientHeight/3)) {
drawZeroOrX(0,1);
}
//SS
else if((X>ClientWidth/3) && (X<2*ClientWidth/3) && (Y>ClientHeight/3) && (Y<2*ClientHeight/3)) {
drawZeroOrX(1,1);
}
//SR
else if((X>2*ClientWidth/3) && (Y>ClientHeight/3) && (Y<2*ClientHeight/3)) {
drawZeroOrX(2,1);
}
//DL
if((X<ClientWidth/3) && (Y>2*ClientHeight/3)) {
drawZeroOrX(0,2);
}
//DS
else if((X>ClientWidth/3) && (X<2*ClientWidth/3) && (Y>2*ClientHeight/3)) {
drawZeroOrX(1,2);
}
//DR
else if((X>2*ClientWidth/3) && (Y>2*ClientHeight/3)) {
drawZeroOrX(2,2);
}
Canvas->TextOutA(2,3,IntToStr(keyy));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
keyy = (int) Key;
//if(((int)Key)==VK_LEFT) drawZeroOrX(0,0);
}
//---------------------------------------------------------------------------