Форум программистов, компьютерный форум CyberForum.ru

Курсор мыши - C++

Восстановить пароль Регистрация
 
Семан
1 / 1 / 0
Регистрация: 13.03.2012
Сообщений: 249
04.03.2013, 16:27     Курсор мыши #1
Привет народ, помогите пожалуйста...

У меня тут задача написать игру уголки(на шашечной доске) я для начало решил сделать его в консуле,
сделал массив 8x8 как бы доска, и обозначил все символами '0' а шашки которые расположены на доске в нужном месте символами '1' теперь мне нужно чтобы мышкой можно было переносить или как то управлять этими '1' двигая их,
например при нажатии ЛКМ на символ удалить его оттуда и поставить его в другое место, я вот не знаю как такое сделать,
если есть идеи помогите пожалуйста
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
const int str=9;   //количество строк
    const int stl=9;   // столбцов
    int i,j;
    int sh1,sh2,sh3,sh4,sh5,sh6,sh7,sh8,sh9,sh10,sh11,sh12,sh13,sh14,sh15,sh16,sh17,sh18;
    int arr[str][stl]={{0,0,0,0,0,0,0,0},
                       {0,0,0,0,0,0,0,0},
                       {0,0,0,0,0,0,0,0}, 
                       {0,0,0,0,0,0,0,0},
                       {0,0,0,0,0,0,0,0},
                       {0,0,0,0,0,0,0,0},
                       {0,0,0,0,0,0,0,0},
                       {0,0,0,0,0,0,0,0}};
void pole()
{
    cout<<arr[1][1]<<"   ";cout<<arr[1][2]<<"   ";cout<<arr[1][3]<<"   ";cout<<arr[1][4]<<"   ";cout<<arr[1][5]<<"   ";cout<<arr[1][6]<<"   ";cout<<arr[1][7]<<"   ";cout<<""<<arr[1][8]<<""   "\n\n\n";
    cout<<arr[2][1]<<"   ";cout<<arr[2][2]<<"   ";cout<<arr[2][3]<<"   ";cout<<arr[2][4]<<"   ";cout<<arr[2][5]<<"   ";cout<<arr[2][6]<<"   ";cout<<arr[2][7]<<"   ";cout<<""<<arr[2][8]<<""   "\n\n\n";
    cout<<arr[3][1]<<"   ";cout<<arr[3][2]<<"   ";cout<<arr[3][3]<<"   ";cout<<arr[3][4]<<"   ";cout<<arr[3][5]<<"   ";cout<<arr[3][6]<<"   ";cout<<arr[3][7]<<"   ";cout<<""<<arr[3][8]<<""   "\n\n\n";
    cout<<arr[4][1]<<"   ";cout<<arr[4][2]<<"   ";cout<<arr[4][3]<<"   ";cout<<arr[4][4]<<"   ";cout<<arr[4][5]<<"   ";cout<<arr[4][6]<<"   ";cout<<arr[4][7]<<"   ";cout<<""<<arr[4][8]<<""   "\n\n\n";
    cout<<arr[5][1]<<"   ";cout<<arr[5][2]<<"   ";cout<<arr[5][3]<<"   ";cout<<arr[5][4]<<"   ";cout<<arr[5][5]<<"   ";cout<<arr[5][6]<<"   ";cout<<arr[5][7]<<"   ";cout<<""<<arr[5][8]<<""   "\n\n\n";
    cout<<arr[6][1]<<"   ";cout<<arr[6][2]<<"   ";cout<<arr[6][3]<<"   ";cout<<arr[6][4]<<"   ";cout<<arr[6][5]<<"   ";cout<<arr[6][6]<<"   ";cout<<arr[6][7]<<"   ";cout<<""<<arr[6][8]<<""   "\n\n\n";
    cout<<arr[7][1]<<"   ";cout<<arr[7][2]<<"   ";cout<<arr[7][3]<<"   ";cout<<arr[7][4]<<"   ";cout<<arr[7][5]<<"   ";cout<<arr[7][6]<<"   ";cout<<arr[7][7]<<"   ";cout<<""<<arr[7][8]<<""   "\n\n\n";
    cout<<arr[8][1]<<"   ";cout<<arr[8][2]<<"   ";cout<<arr[8][3]<<"   ";cout<<arr[8][4]<<"   ";cout<<arr[8][5]<<"   ";cout<<arr[8][6]<<"   ";cout<<arr[8][7]<<"   ";cout<<""<<arr[8][8]<<""   "\n\n\n";
 
}
void shashki()
{
    arr[1][1]=1;
    arr[1][2]=1;
    arr[1][3]=1;
    arr[2][1]=1;
    arr[2][2]=1;
    arr[2][3]=1;
    arr[3][1]=1;
    arr[3][2]=1;
    arr[3][3]=1;
    arr[6][6]=1;
    arr[6][7]=1;
    arr[6][8]=1;
    arr[7][6]=1;
    arr[7][7]=1;
    arr[7][8]=1;
    arr[8][6]=1;
    arr[8][7]=1;
    arr[8][8]=1;
}
int main()
{
 
    
    shashki();
    pole();
    
//
//while(1)
//{
//  cin>>i;
//  cin>>j;
//  cout<<arr[i][j];
//
//} 
 
 
 
    getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2013, 16:27     Курсор мыши
Посмотрите здесь:

LOCATE курсор C++
C++ Курсор
C++ Курсор
Курсор C++
Как узнать где находиться курсор мыши? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
04.03.2013, 16:34     Курсор мыши #2
массивы можно выводить в цикле, чтоб избежать таких ужасных функций

C++
1
2
3
4
5
6
7
8
9
10
11
void pole()
{
for(int i=0; i<str; i++)
{
    for(int j=0; j<stl; j++)
    {
        cout<<arr[i][j]<<"\t";
    }
    cout<<endl<<endl; //или cout<<"\n\n";
}
}
Добавлено через 1 минуту
а вообще, по вашему вопросу...
это winapi, нужно лезть в корни консоли и её всяких команд.
учитывая, как вы написали функцию вывода поля на экран.... не советую, бросьте, и начните с++ практически с 0, начиная с типов данных, условий, циклов, и тд по стандартному учебнику
Семан
1 / 1 / 0
Регистрация: 13.03.2012
Сообщений: 249
04.03.2013, 16:45  [ТС]     Курсор мыши #3
Спасибо за подсказку, но все же я не понял как с курсором мыши работать, да и в интернете нормального нечего не нашел, возможно плохо искал
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
04.03.2013, 16:49     Курсор мыши #4
я для начало решил сделать его в консуле
Вряд ли в консоли у вас с мышкой что то получится

Могу предложить для консоли указывать координаты
что то типа этого
C++
1
2
3
int x,y;
cin>>x>>y;
cout<<arr[x][y];
Семан
1 / 1 / 0
Регистрация: 13.03.2012
Сообщений: 249
04.03.2013, 17:01  [ТС]     Курсор мыши #5
ну допустим вовремя игры я должен выбрать шашку arr[3][3] и у меня есть 5 вариантов хода, но я хочу предоставить этот выбор игроку, то есть ходов может за раз быть очень много и для всего этого писать бредого, как то управлять надо по другому шашка может перепрыгнуть через любую другую шашку, а также ходить вовсе рядом лежащие свободные ячейки, но только 1 ход,
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
04.03.2013, 23:58     Курсор мыши #6
Если вы хотите сделать шашки в консоли Мышь + Консоль = забудьте. Для мыши нужен GUI.
ну допустим вовремя игры я должен выбрать шашку arr[3][3] и у меня есть 5 вариантов хода, но я хочу предоставить этот выбор игроку, то есть ходов может за раз быть очень много и для всего этого писать бредого, как то управлять надо по другому шашка может перепрыгнуть через любую другую шашку, а также ходить вовсе рядом лежащие свободные ячейки, но только 1 ход,
У вас доска представлена массивом 0 - пустая клетка 1 - вражеская шашка 2 - ваша шашка игра продолжается в цикле пока не закончиться, при каждой итерации цикла(при каждом ходе) вы выводите массив на экран в виде прямоугольника
1 0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
2 0 2 0 2 0 2 0 2
0 2 0 2 0 2 0 2 0
2 0 2 0 2 0 2 0 2
игра в цикле делится на два этапа, ваш ход и ход противника(AI), при вашем ходе проще вы видите доску и видите пустые клетки( cin>>a[i][j] ) ходите и проверяете, если сьели вражескую шашку ставите на её место 0. С AI труднее ему нужно добавить логики выбора. Надеюсь общая картина чуть чуть прояснилась.

и у меня есть 5 вариантов хода, но я хочу предоставить этот выбор игроку, то есть ходов может за раз быть очень много и для всего этого писать бредого
Привыкайте это программирование. Ваша игра тем будет лучше чем больше вы опишете игровых ситуаций, всевозможные проверки ошибок, ходов, и всевозможных действий.
Главное не опускать руки и все получится рано или поздно.
Семан
1 / 1 / 0
Регистрация: 13.03.2012
Сообщений: 249
05.03.2013, 13:18  [ТС]     Курсор мыши #7
Спасибо, постораюсь сделать как вы сказали, но это просто пример на косули делаю, сам собираюсь на qt сделать
чтобы графика ещё была, иначе это как курсач не примут
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2013, 16:19     Курсор мыши
Еще ссылки по теме:

невидимый курсор C++
мигающий курсор C++
Как в консольном приложении скрыть курсор мыши? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
define undef
 Аватар для define undef
32 / 32 / 1
Регистрация: 19.01.2013
Сообщений: 33
05.03.2013, 16:19     Курсор мыши #8
Семан, Консоль с мышкой по моему не очень хорошо совмещаются, указывать координаты немножко не удобно, может стоит сделать управление с помощью клавиатуры. Вот не большой пример, может не самый лучший, но работает. Управление WASD
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
#include <iostream>
#include <conio.h> //Г*ГіГ¦Г*Г* äëÿ getch
 
using namespace std;
 
void print_my_array(char tmp[10][10]){ //ГЏГҐГ·Г*ГІГј Г¬Г*Г±Г±ГЁГўГ*
  for(int i=0;i<10;i++){
   for(int j=0;j<10;j++){
    cout<<tmp[i][j];}
   cout<<endl;
  }
}
 
int main()
{
  int X=4, Y=4; //êîðäèГ*Г*ГІГ»
  char mass[10][10], tmp; //Г¬Г*Г±Г±ГЁГў ГЁ ïåðåììåГ*Г*Г*Гї Гў êîòîðîé áóäåì
                          //õðГ*Г*ГЁГІГј ГІГ® Г·ГІГ® áûëî Г*Г* ìåñòå êóðñîðГ* ('@')
  int key; //Êîä ГЄГ«Г*ГўГЁГёГЁ
  
  for(int i=0;i<10;i++){ //î÷èùГ*ГҐГ¬ Г¬Г*Г±Г±ГЁГў
   for(int j=0;j<10;j++){
   mass[i][j] = ' ';}
  }
   
  tmp = mass[X][Y];
 
  while(true){
   key = getch(); //ïîëó÷Г*ГҐГ¬ êîä ГЄГ«Г*ГўГЁГёГЁ (äëÿ w=230, a=228, s=235, d=162)
   system("cls"); //î÷èùГ*ГҐГ¬ ГЅГЄГ°Г*Г*
   
   mass[X][Y] = tmp;  
    
   switch(key){
     case 230: //w
      if(X>0){X--;}
     break;
   
     case 235: //s
      if(X<9){X++;}
     break;
   
     case 162: //d
      if(Y<9){Y++;}
     break;
   
     case 228: //a
      if(Y>0){Y--;}
     break;
   }
   
   tmp = mass[X][Y];
   mass[X][Y] = '@';
   
   print_my_array(mass);  
  }
  
  system("PAUSE");  
  return 0;
}
Yandex
Объявления
05.03.2013, 16:19     Курсор мыши
Ответ Создать тему
Опции темы

Текущее время: 12:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru