Форум программистов, компьютерный форум, киберфорум
Наши страницы

Как передать метод класса в качестве параметра функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисление косинуса угла между векторами, в чем ошибка http://www.cyberforum.ru/cpp-beginners/thread603826.html
Написать программу для вычисления косинуса угла между векторами, заданными своими координатами (скалярное произведение векторов делится на произведе- ние модулей этих векторов) . Для вычисления...
C++ Программа в Visual C++ выдаёт ошибки Здравствуйте. Скажите, пожалуйста, почему программа выдаёт такие ошибки в заголовочном файле: 1>d:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\api.h(60) : warning C4129: D:... http://www.cyberforum.ru/cpp-beginners/thread603805.html
C++ Рещить C++
Дана целочисленная квадрадная матрица. Определить: 1)произведение элементов в тех строках, которая не содержит положительных элементов. 2)номер строки,в которой находится самая длинная серия...
Составить программу вывода C++
Составить программу вывода на экран числа, вводимого с клавиатури.Числу, которое выводится должно предшествовать сообщение "Вы ввели число"
C++ Сформировать массив указателей на матрицу строк http://www.cyberforum.ru/cpp-beginners/thread603780.html
может кто нибудь обьяснит что требуеться в задании сделать. сформировать массив указателейна масиив строк и заполнить циклически буквами английского алфавита не могу понять сформировать массив...
C++ Ошибка при работе программы Здравствуйте! У меня такая проблема, вылетает программа. Она работает, компилируется, данные вводятся, но когда я перехожу к выводу перечня нужной информации - вылетает. Подскажите, в чем проблема и... подробнее

Показать сообщение отдельно
skiminock
2 / 2 / 0
Регистрация: 11.06.2012
Сообщений: 18

Как передать метод класса в качестве параметра функции - C++

12.06.2012, 19:35. Просмотров 1874. Ответов 2
Метки (Все метки)

Это типа "бот", он работает ("шагает" по заданному полю)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include "stdafx.h"
 
#include <iostream>
#include <time.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h> 
 
using namespace std;
 
class CMyBotField
{   
private:
 
    char** c_array; // поле
    int max_high; // высота поля
    int max_len; // длина поля
 
    int y; // координата игрек
    int x; // координата икс
    
public:
 
    CMyBotField(int high, int len); // конструктор
    ~CMyBotField();                 // деструктор
    
    void          MemArray(); // выделить память под массив
    void      GetArray(void); // задать массив
    void        PrintArray(); // вывести массив на экран
    
    void    RandCoords(); // начальные координаты 
 
    void           SetStar(); // положить звезду
    void  ChangeFirstCoord(); // сменить игрек
    void ChangeSecondCoord(); // сменить икс
    void           DelStar(); // удалить звезду
};
 
CMyBotField::CMyBotField(int high, int len) // конструктор
{  
       CMyBotField::max_high = high;
       max_len = len;
       
       MemArray();
}
 
CMyBotField::~CMyBotField() // деструктор
{
    for (int i = 0; i < max_high; ++i)
    {
        delete [] c_array[i];
    }
    delete []c_array;
}
 
void CMyBotField::MemArray() // выделить память под массив
{
    c_array = new char*[max_high];   
    
    for (int i = 0; i < max_high; ++i)
    {
        c_array[i] = new char[max_len];
    }
}
 
void CMyBotField::GetArray(void) // задать массив
{
    for (int i = 0; i < max_high; ++i)
    {
        for (int j = 0; j < max_len; ++j)
        {
            c_array[i][j] = '.';
        }
    }
}
 
void CMyBotField::PrintArray() // вывести массив на экран
{
    for (int i = 0; i < max_high; ++i)
    {
        for (int j = 0; j < max_len; ++j)
        {
            cout << c_array[i][j];
        }
        cout << endl;
    }
}
 
void CMyBotField::RandCoords() // начальные координаты 
{
    srand((unsigned int)time(0));
    y = rand() % (max_high - 1);
    x = rand() % (max_len - 1);
}
 
void CMyBotField::SetStar() // положить звезду
{
    c_array[y][x] = '*';
}
 
void CMyBotField::ChangeFirstCoord() // сменить игрек
{
    srand((unsigned int)time(0));
    int choose = rand() % 9;
 
    if ( y >= max_high - 1 || choose >= 5 ) 
        --y;
    
    if ( y == 0  || choose < 5  ) 
        ++y;
}
 
void CMyBotField::ChangeSecondCoord() // сменить икс
{
    srand((unsigned int)time(0));
    int choose = rand() % 9;
 
    if ( x >= max_len - 1  || choose >= 5) 
        --x;
    
    if ( x == 0 || choose < 5 ) 
        ++x;            
}
 
void CMyBotField::DelStar() // удалить звезду
{
    c_array[y][x] = '.';
    //Sleep(500);
}
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
int _tmain(int argc, _TCHAR* argv[])
{
    srand(clock_t(NULL));
 
    CMyBotField bot_move(20, 40);
        
    bot_move.GetArray();
    bot_move.RandCoords();
    
    while(! _kbhit() )
    {
        bot_move.SetStar();
        bot_move.PrintArray();
        bot_move.DelStar();
        
        int choose = (rand() % 9);
        
        if (choose >= 4)
        {
            bot_move.ChangeFirstCoord();
        }
        else
        {
            bot_move.ChangeSecondCoord();
        }
                    
        system("cls");
    }
    return 0;
}
Подскажите, как сделать из этого куска одну функцию, передав ей в качестве параметра два метода??

C++
1
2
3
4
5
6
7
8
9
10
int choose = (rand() % 9);
        
        if (choose >= 4)
        {
            bot_move.ChangeFirstCoord();
        }
        else
        {
            bot_move.ChangeSecondCoord();
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.