subval
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Пишу домино на С++.Возникла проблема - класс tochki (cм. код) заполняет только верхнюю часть костяшки (может и нижнию), но по алгоритму нужно различать верхнюю и нижнию части одной костяшки (т.е. совокупность точек вверху и внизу различна). КОД: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <dos.h> #include <graphics.h> #include <time.h> class tprym // класс прямоугольник { public: int x1,y1,x2,y2; public: tprym(int ix1,int iy1,int ix2,int iy2) {x1=ix1; y1=iy1; x2=ix2; y2=iy2; } void show1() { rectangle(x1,y1,x2,y2); line(x1,y1+(y2-y1)/2,x2,y2-(y2-y1)/2); } void hide1() { int bk,cc; bk=getbkcolor(); cc=getcolor(); setcolor(bk); rectangle(x1,y1,x2,y2); line(x1,y1+(y2-y1)/2,x2,y2-(y2-y1)/2); } }; // класс точка class tpoint { public: int x,y,xrad,yrad; public: tpoint(int ix,int iy,int ixrad,int iyrad) {x=ix;y=iy;xrad=ixrad;yrad=iyrad; } void show2() {fillellipse(x,y,xrad,yrad); } void hide2() { int bw,cs; bw=getbkcolor(); cs=getcolor(); setcolor(bw); fillellipse(x,y,xrad,yrad); } }; // класс точки на базе класса точка class tochki : public tpoint { protected: int n,dx,dy; public: tochki(int ix,int iy,int ixrad,int iyrad,int in): tpoint(ix,iy,ixrad,iyrad) {n=in; dx=10; dy=10; } void showtochki() { switch(n) {case 0: break; case 1: tpoint::show2(); break; case 2: fillellipse(x-dx,y+dy,xrad,yrad); fillellipse(x+dx,y-dy,xrad,yrad); break; case 3: tpoint::show2(); fillellipse(x-dx,y+dy,xrad,yrad); fillellipse(x+dx,y-dy,xrad,yrad); break; case 4: fillellipse(x-dx,y+dy,xrad,yrad); fillellipse(x+dx,y-dy,xrad,yrad); fillellipse(x+dx,y+dy,xrad,yrad); fillellipse(x-dx,y-dy,xrad,yrad); break; case 5: tpoint::show2(); fillellipse(x-dx,y+dy,xrad,yrad); fillellipse(x+dx,y-dy,xrad,yrad); fillellipse(x+dx,y+dy,xrad,yrad); fillellipse(x-dx,y-dy,xrad,yrad); break; case 6: fillellipse(x-dx,y,xrad,yrad); fillellipse(x+dx,y,xrad,yrad); fillellipse(x-dx,y+dy,xrad,yrad); fillellipse(x+dx,y-dy,xrad,yrad); fillellipse(x+dx,y+dy,xrad,yrad); fillellipse(x-dx,y-dy,xrad,yrad); break; } } void hidetochki() { tpoint::hide2(); } }; //класс костяшка class tfishka : public tprym,public tochki { public: tfishka(int ix1,int iy1,int ix2,int iy2,int ix,int iy,int ixrad,int iyrad,int in): tprym(ix1,iy1,ix2,iy2),tochki(ix,iy,ixrad,iyrad,in) { } void showtfishka() { tprym::show1(); tochki::showtochki(); } }; void main() {int gd=DETECT,gm; initgraph(&gd,&gm," "); int m1=165,n1=390,m2=m1+40,n2=n1+80; tfishka fish(m1,n1,m2,n2,m1+(m2-m1)/2,n1+(n2-n1)/4,3,3,5); fish.showtfishka(); getche(); } |