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

Шахматы. Объектно-ориентированная программа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
Slafira
1 / 1 / 0
Регистрация: 18.10.2010
Сообщений: 113
11.04.2011, 18:14     Шахматы. Объектно-ориентированная программа #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
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
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Graphics.hpp>
#include <iostream>
#include <math.h>
#include <iomanip>
#include <time.h>
#include <vector>
#include <stdlib.h>
#include <string>
#include <algorithm>
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
#include <tchar.h>
 
 
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TImage *Image1;
    TImage *Image2;
    TImage *Image3;
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
  class cell
{
 private:
        int xval, yval;
 
  public:
cell(int x = 0, int y = 0) {
                xval = x;
                yval = y;
        }
  int x() { return xval; }
        int y() { return yval; }
 
 
}  ;
  class figure
{ public:
  cell loc;
  bool whitecolor;
  DynamicArray <cell> targets;
  virtual void ForMove();  // находит клетки на которые возможно двигаться, заполняет массив тарджетс, так как эта функция уникальна для всех фигур, то оставляем ее виртуальной для потомков
  void Move(int n);  // двигает в одну из точек массива тарджетс
}  ;
  class pawn : public figure
  {
       public:
       pawn(void) {figure(); }
      // void ForMove() override;
  };
   class knight : public figure
  {
       public:
       knight(void) {figure(); }
 
         bool  knight_can_square;
//knight_can_square = abs(knight_v - xval) * abs(knight_h - yval);
  };
   class bishop : public figure
  {
       public:
       bishop(void) {figure(); }
  };
   class Rook : public figure
  {
       public:
       Rook(void) {figure(); }
  };
   class Queen : public figure
  {
       public:
       Queen(void) {figure();}
  };
  class King : public figure
  {
       public:
       King(void) {figure();}
 
  };
 
#endif

я не прошу чтоб за меня написали курсовую, я, как ни странно, сама хочу написать. Прошу помочь с описанием класса одной любой фигуры и хотя бы примерно как связать её с картинкой.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
11.04.2011, 18:31     Шахматы. Объектно-ориентированная программа #2
Slafira, читай про MVC (model-view-controller). Все вопросы сразу отпадут.
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
11.04.2011, 18:37     Шахматы. Объектно-ориентированная программа #3
Картинку связать с фигурой не надо.
Я примерно приставляю так: есть материнский класс фигура который имеет только параметр положение фигуры. И все остальные фигуры будут её унаследовать. Каждая фигура имеет предикат проверяющийся привольность хода из одного поля в другое. есть класс партия который содержит общую информацию такую как номер хода, время на часах у обоих игроков, последний ход когда ходила пешка и т.д. И плюс должно быть функции занимающаяся перерисовкой доски.

как то так.
Slafira
1 / 1 / 0
Регистрация: 18.10.2010
Сообщений: 113
11.04.2011, 18:57  [ТС]     Шахматы. Объектно-ориентированная программа #4
Цитата Сообщение от Overmind024 Посмотреть сообщение
Картинку связать с фигурой не надо.
Я примерно приставляю так: есть материнский класс фигура который имеет только параметр положение фигуры. И все остальные фигуры будут её унаследовать. Каждая фигура имеет предикат проверяющийся привольность хода из одного поля в другое. есть класс партия который содержит общую информацию такую как номер хода, время на часах у обоих игроков, последний ход когда ходила пешка и т.д. И плюс должно быть функции занимающаяся перерисовкой доски.

как то так.
класс фигура ещё цвет у меня содержит. время с часами мне не обязательно.
что за функция занимающаяся перерисовкой доски?
это всё я и сама примерно представляю. я не знаю как это реализовать. не знаю что где в коде написать.
и как это не надо связывать картинку с фигурой? я вот взялась за фигуру за конкретную картинку, программа должна знать куда можно перетащить эту картинку а куда нельзя.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
11.04.2011, 19:51     Шахматы. Объектно-ориентированная программа #5
Цитата Сообщение от Slafira Посмотреть сообщение
я вот взялась за фигуру за конкретную картинку, программа должна знать куда можно перетащить эту картинку а куда нельзя.
Как бы попробовал сделать я.
Изучил бы оконные функции. Обалденные туториалы Айзелиона есть на wasme, но там хоть и на ассемблере, но можно каждый код брать и переделывать под С++, ибо там API-функциии в основном.
Ну или другую литературу где найдёшь. Оконная функция- это главное, эта функция обрабатывает сообщения, которые поступают окну

Вот ты говоришь, что взялась за фигуру это значит, что навела на неё курсор и ткнула мышью (допустим, что так ты будешь брать)

Вот оконная функция пусть обрабатывает сообщение, которое пришло окну. Обработка сообщения это и есть выполнение кода- то есть некоторый код проверяет- ага, курсор находится там-то и там-то, и поступило сообщение такое-то и такое-то. Там- конь. Коню можно сходить туда-то и туда-то (тут запускается код, который ищет все клетки, куда может сходить конь с этой клетки)

Так, ну то есть надо сообщения поизучать и координаты курсора, как с ними работать
.......
Ну вот так примерно. А потом да, должен выполняться код, перерисовывающий доску.

Обязательно посмотреть может попроще какие способы есть, там сказали MVC, туда глянь

В чём кодишь? Какая среда?

Вот тебе архив, там прога которая определяет координаты курсора и выводит его. Не так и сложно
Вложения
Тип файла: rar kursor.rar (131.7 Кб, 45 просмотров)
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
11.04.2011, 20:00     Шахматы. Объектно-ориентированная программа #6
Ты не забывай нас, отписывайся иногда, мне самому интересно.
eXXXXXXXXXXX
30 / 30 / 3
Регистрация: 24.02.2011
Сообщений: 126
11.04.2011, 20:20     Шахматы. Объектно-ориентированная программа #7
Цитата Сообщение от Slafira Посмотреть сообщение
я вот взялась за фигуру за конкретную картинку, программа должна знать куда можно перетащить эту картинку а куда нельзя.
пусть фигура сначала перемещается, а потом проверяется правильность, если неправильно-то возвращается назад
Slafira
1 / 1 / 0
Регистрация: 18.10.2010
Сообщений: 113
11.04.2011, 20:27  [ТС]     Шахматы. Объектно-ориентированная программа #8
CodeGear RAD Studio у меня

Я не понимаю в книжках ничего. Я там не могу найти то что мне нужно. А если нахожу, то не понимаю эти строки и не знаю куда их пихать.

Я перевелась из филиала в головной ВУЗ на третий курс и многое упущено, то что я уже должна знать. Меня там учили как чтоб форме кликаешь и она другим цветом становится сделать. И тому подобным вещам в одну строку. Ну самое трудное, что я писала это перевод из одной системы счисления в другую. А ООП я вообще не понимаю и с классами никогда не работала. Ну то есть я понимаю логику, а как это написать не знаю. Я прогу с классами с трудом написать могу.
Мне надо чтоб мне объяснили или пример показали проги. Я два месяца эту курсовую уже делаю и сдавать её через две недели. Я столько книг уже скачала, это бесполезно.
У кого-нибудь есть прога, чего-нибудь где картинки по форме можно перетаскивать?

MVC про это нашла и прочитала, суть поняла, как это реализовать не знаю

архив с курсором скачала и посмотрела. каким образом это в свою прогу воткнуть не поняла.

Ещё раз, я понимаю как что должно работать, я не понимаю как написать код, не знаю что куда написать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2011, 20:49     Шахматы. Объектно-ориентированная программа
Еще ссылки по теме:

C++ программа шахматы (маршрут коня)
C++ Программа удаленного управления компьютерами в сетях используя объектно-ориентированную технологию с++
Шахматы в С++ C++

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
11.04.2011, 20:49     Шахматы. Объектно-ориентированная программа #9
Цитата Сообщение от eXXXXXXXXXXX Посмотреть сообщение
пусть фигура сначала перемещается, а потом проверяется правильность, если неправильно-то возвращается назад
мужчина, ей нужна привязка к графике.

Честно говоря- честно говоря- классы тут дело десятое.
Попробуй написать программу, которая бы рисовала окно.

Просто белый квадрат. Могу подкинуть ссыли.

По кликанью на окно происходило бы какое-нибудь событие- например, что-нибудь прорисовывалось на окне. Например писалось helloword
А потом усложнять можно. Условно делить окно на 4 части и по кликанью на каждой части пусть что-нибудь происходит и так далее.

Ну и это самое... Я не ставлю на твою своевременную сдачу курсовой. Извини уж.
Yandex
Объявления
11.04.2011, 20:49     Шахматы. Объектно-ориентированная программа
Ответ Создать тему
Опции темы

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