// Tehtävät 1-2 // Ohjelma, joka piirtää shakkilaudan // mahdollista piirtää myös useammalla värillä, mutta rivit eivät // silloin satu kohdalleen. // Tavallisella = 2 värisellä laudalla toimii // // Jani Korhonen 30.10.-99 #include class CMainWindow : public CFrameWnd { public: CMainWindow() { Create(NULL,"Shakkilauta"); } void OnPaint(); DECLARE_MESSAGE_MAP() }; BEGIN_MESSAGE_MAP( CMainWindow, CFrameWnd ) ON_WM_PAINT() END_MESSAGE_MAP() class CDrawManApp : public CWinApp { public: virtual BOOL InitInstance() { m_pMainWnd = new CMainWindow(); m_pMainWnd->ShowWindow(m_nCmdShow); m_pMainWnd->UpdateWindow(); return TRUE; } }; class cLauta { private: int x; // vasemman yläkulman int y; // koordinaatit int nx; // ruutujen määrä x-suunnassa int ny; // -"- y-suunnassa int ruudun_koko; // ruudun sivun pituus int vlkm; // värien lukumäärä long varit[10]; // taulukko väreistä, joita laudalla käytetään public: cLauta(int ix, int iy, int inx, int iny, int iruudun_koko, int ivlkm, long* vari); void Draw(CDC &dc); }; // cLauta cLauta::cLauta(int ix, int iy, int inx, int iny, int iruudun_koko, int ivlkm, long* vari) { x=ix; y=iy; nx=inx; ny=iny; ruudun_koko=iruudun_koko; vlkm=ivlkm; for (int i=0;i= vlkm ) v=0; // ettei mennä väritaulukon yli xx += ruudun_koko; // sarakkeen vaihto } // sarake if ( ++avari >= vlkm ) avari = 0; yy += ruudun_koko; // rivin vaihto } // rivi } void CMainWindow::OnPaint() { CPaintDC dc(this); // Luodaan laiteyhteys piirtämistä varten // "mustat ruudut" "valkeat ruudut" long varit[]={RGB(240,0,0), RGB(255,255,255), RGB(0,255,0)}; // x y xlkm ylkm rlev vlkm varitaulukko cLauta lauta(0,0, 8, 8, 40, 3, varit); lauta.Draw(dc); } CDrawManApp DrawManApp; // constructor initializes and runs the app