Помощь с указателями
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Вот рабочая программа, но нужно сделать так, чтобы был реализован способ передачи объекта класса rect по указателю из функции main() в функции increase() и decrease(). Кто может помочь и объяснить?
Source.cpp
include <iostream>
include <Windows.h>
include <conio.h>
include «Header.h»
using namespace std;
int main()
{
COORD point_left, point_right;
color color[] = { (255, 0, 0), (255,255,0), (0,255,0),(255,0,255),(0,255,255) };
const int MAX = 10;
Rect fn;
fn.get_rect(&point_left, &point_right);
for (int i = 0; i < MAX; i++) {
fn.draw_rect();
friendfunc_increase(&point_left, &point_right);
fn.set_rect(point_left, point_right, color[(i + 1) % 5]);
Sleep(500);
}
for (int i = MAX; i >= 0; i--) {
fn.draw_rect();
friendfunc_decrease(&point_left, &point_right);
fn.set_rect(point_left, point_right, color[(i — 1) % 5]);
Sleep(500);
}
system(«pause»);
_getche();
}
Header.h
struct color
{
int R;
int G;
int B;
};
class Rect
{
private:
COORD left_bottom;
COORD right_top;
color color_type;
public:
Rect(COORD left = { 420, 300 }, COORD right = { 540, 200 }, color color = { 250,0,0 })
: left_bottom(left), right_top(right), color_type(color) {}
void set_rect(COORD left, COORD right, color color)
{
left_bottom = left;
right_top = right;
color_type = color;
}
void get_rect(COORD left, COORD right) {
(left) = left_bottom;
(right) = right_top;
}
void draw_rect()
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO curs;
GetConsoleCursorInfo(hStdout, &curs);
curs.bVisible = FALSE;
SetConsoleCursorInfo(hStdout, &curs);
HWND hWindow = NULL;
HDC hDeviceContext;
HPEN hPen;
hWindow = GetConsoleWindow();
hDeviceContext = GetDC(hWindow);
hPen = CreatePen(PS_SOLID, 1, RGB(color_type.R, color_type.G, color_type.B));
SelectObject(hDeviceContext, hPen);
int high = left_bottom.Y — right_top.Y;
for (int j = 0; j < high; j++) {
MoveToEx(hDeviceContext, left_bottom.X, right_top.Y + j, NULL);
LineTo(hDeviceContext, right_top.X, right_top.Y + j);
}
}
friend int friendfunc_increase(COORD, COORD);
friend int friendfunc_decrease(COORD, COORD);
};
int friendfunc_increase(COORD p1, COORD p2) {
(p1).Y += 15;
(p2).Y -= 15;
(p1).X -= 30;
(p2).X += 30;
return(0);
}
int friendfunc_decrease(COORD p1, COORD p2) {
(p1).Y -= 15;
(p2).Y += 15;
(p1).X += 30;
(p2).X -= 30;
return(0);
}