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

Крестики-нолики - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
Саня gamer
96 / 70 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
01.06.2013, 20:03     Крестики-нолики #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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include "Pole.h"
void CChunk::setState(e_state new_state)
{
    state=new_state;
}
 
 
 
CPole::CPole()
{
    glClearColor(0.0,1.0,0.0,0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_QUADS);
    glColor3f(1.0,0.0,0.0);
    glVertex2i(0,0);
    glVertex2i(0,300);
    glVertex2i(300,300);
    glVertex2i(300,0);
    glEnd();
    //glutSwapBuffers();
    //glFlush();
}
void CPole::render(CChunk quad)
{
    glBegin(GL_QUADS);
    glColor3f(0.0,1.0,0.0);
    glVertex2i(quad.minx, quad.miny);
    glVertex2i(quad.maxx,quad.miny);
    glVertex2i(quad.maxx, quad.maxy);
    glVertex2i(quad.minx, quad.maxy);
    glEnd();
}
void CPole::render()
{
 
    render(chunk[0][0]);
    render(chunk[0][1]);
    render(chunk[0][2]);
    render(chunk[1][0]);
    render(chunk[1][1]);
    render(chunk[1][2]);
    render(chunk[2][0]);
    render(chunk[2][1]);
    render(chunk[2][2]);
    //glutSwapBuffers();
    glFlush();
 
}
void CPole::init()
{
//  _________________________
//  |       |       |       |
//  |  0,0  |   0,1 |  0,2  |
//  |_______|_______|_______|
//  |       |       |       |
//  |  1,0  |  1,1  |  1,2  |
//  |_______|_______|_______|
//  |       |       |       |
//  |  2,0  |  2,1  |  2,2  |
//  |_______|_______|_______|
 
//1 ряд
    chunk[0][0].minx=1;
    chunk[0][0].maxx=99;
    chunk[0][0].miny=1;
    chunk[0][0].maxy=99;
 
    chunk[0][1].minx=101;
    chunk[0][1].maxx=199;
    chunk[0][1].miny=1;
    chunk[0][1].maxy=99;
 
    chunk[0][2].minx=201;
    chunk[0][2].maxx=299;
    chunk[0][2].miny=1;
    chunk[0][2].maxy=99;
 
// 2 ряд
    chunk[1][0].minx=1;
    chunk[1][0].maxx=99;
    chunk[1][0].miny=101;
    chunk[1][0].maxy=199;
 
    chunk[1][1].minx=101;
    chunk[1][1].maxx=199;
    chunk[1][1].miny=101;
    chunk[1][1].maxy=199;
 
    chunk[1][2].minx=201;
    chunk[1][2].maxx=299;
    chunk[1][2].miny=101;
    chunk[1][2].maxy=199;
// 3 ряд
    chunk[2][0].minx=1;
    chunk[2][0].maxx=99;
    chunk[2][0].miny=201;
    chunk[2][0].maxy=299;
 
    chunk[2][1].minx=101;
    chunk[2][1].maxx=199;
    chunk[2][1].miny=201;
    chunk[2][1].maxy=299;
 
    chunk[2][2].minx=201;
    chunk[2][2].maxx=299;
    chunk[2][2].miny=201;
    chunk[2][2].maxy=299;
}
void CPole::xrest(CChunk quad)
{
    glBegin(GL_LINES);
    glColor3f(0.0,0.0,1.0);
    glVertex2i(quad.minx, quad.miny);
    glVertex2i(99, 99);
    glVertex2i(99, quad.miny);
    glVertex2i(quad.minx,99);
    glEnd();
    glFlush();
}


Хидер
Кликните здесь для просмотра всего текста
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
#ifndef POLE_H_INCLUDED
#define POLE_H_INCLUDED
 
#include <GL/freeglut.h>
#include <GL/gl.h>
class CChunk
{
    public:
    CChunk()
    {
        state=nul;
    }
    int minx;
    int maxx;
    int miny;
    int maxy;
    enum e_state {empt, xrest, nul} state;
    void setState(e_state new_state);
};
 
 
class CPole
{
public:
    CChunk chunk[3][3];
    CPole();
    void render(CChunk quad);
    void render();
    void init();
    void xrest(CChunk quad);
 
};
#endif // POLE_H_INCLUDED


main
Кликните здесь для просмотра всего текста
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
#include <GL/freeglut.h>
#include <GL/gl.h>
#include "Pole.h"
using namespace std;
int win;
CPole pole;
void setOrthographicProjection() {
 
    // switch to projection mode
    glMatrixMode(GL_PROJECTION);
 
    // save previous matrix which contains the
    //settings for the perspective projection
    glPushMatrix();
 
    // reset matrix
    glLoadIdentity();
 
    // set a 2D orthographic projection
    gluOrtho2D(0, 300, 300, 0);
 
    // switch back to modelview mode
    glMatrixMode(GL_MODELVIEW);
}
 
void display()
{
    pole.render();
}
static void key(unsigned char key, int x, int y)
{
    switch(key)
    {
    case 27:
    {
        glutDestroyWindow(win);
    }
    }
}
 
 
void idle(void)
{
    glutPostRedisplay();
}
 
void mouse(int btn, int state, int x, int y)
{
    switch(state)
 
    case 1:if(x>0&&x<99&y>0&&y<99)
    {
        //MessageBox(NULL,"opopop","yutytuyt", MB_OK);
        pole.xrest(pole.chunk[0][0]);
    }
}
 
/* Program entry point */
 
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitWindowSize(300,300);
    glutInitWindowPosition(0,0);
    glutInitDisplayMode(GLUT_RGB);
    //glutInitWindowStyle(GLUT_NO_RESIZE);
    win=glutCreateWindow("game");
 
 
    setOrthographicProjection();
    CPole pole;
    pole.init();
    pole.render();
    glutKeyboardFunc(key);
    glutIdleFunc(idle);
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
 
 
    glutMainLoop();
 
    return EXIT_SUCCESS;
}


Проблема возникла в функции void CPole::xrest(CChunk quad).
Вызываю её вот так pole.xrest(pole.chunk[0][0]);
Если я в функции пишу точки цифрами то всё норм, а когда беру значения с pole.chunk[0][0] начинается магия
Вот так всё норм
C++
1
2
3
4
5
6
7
8
9
10
11
void CPole::xrest(CChunk quad)
{
    glBegin(GL_LINES);
    glColor3f(0.0,0.0,1.0);
    glVertex2i(quad.minx, quad.miny);
    glVertex2i(99, 99);
    glVertex2i(99, quad.miny);
    glVertex2i(quad.minx,99);
    glEnd();
    glFlush();
}
А вот так не рисует крестика
C++
1
2
3
4
5
6
7
8
9
10
11
void CPole::xrest(CChunk quad)
{
    glBegin(GL_LINES);
    glColor3f(0.0,0.0,1.0);
    glVertex2i(quad.minx, quad.miny);
    glVertex2i(quad.maxx, quad.max);
    glVertex2i(quad.maxx, quad.miny);
    glVertex2i(quad.minx,quad.maxy);
    glEnd();
    glFlush();
}
ОНО почемуто не может прочитать значения quad.maxx, quad.maxy, а с quad.minx, quad.miny всё норм
Вопрос:
Почему так?

Добавлено через 19 часов 33 минуты
есть хоть какие нибудь идеи?

Добавлено через 45 минут
ап ап

Добавлено через 48 минут
двое суток в ступоре))

Добавлено через 20 часов 22 минуты
Люди помогите
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2013, 20:03     Крестики-нолики
Посмотрите здесь:

C++ Крестики нолики
Крестики-нолики C++
C++ Крестики-нолики
C++ Крестики Нолики
C++ Крестики-нолики
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Саня gamer
96 / 70 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
18.06.2013, 21:07  [ТС]     Крестики-нолики #2
вверх
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
18.06.2013, 21:23     Крестики-нолики #3
Саня gamer, текст ошибки кинь.
Саня gamer
96 / 70 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
19.06.2013, 21:48  [ТС]     Крестики-нолики #4
Проблема возникла в функции void CPole::xrest(CChunk quad).
Вызываю её вот так pole.xrest(pole.chunk[0][0]);
Если я в функции пишу точки цифрами то всё норм, а когда беру значения с pole.chunk[0][0] начинается магия
Ошибка: не рисует крестик

Добавлено через 22 часа 11 минут
люди ау
Jupiter
19.06.2013, 21:50
  #5

Не по теме:

Цитата Сообщение от Саня gamer Посмотреть сообщение
люди ау
ты когда код писал о людях думал? вот и сиди теперь со своим xrest-ом и ц-полем

Саня gamer
96 / 70 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
19.06.2013, 22:37  [ТС]     Крестики-нолики #6
за конструктивную критику спс
Yandex
Объявления
19.06.2013, 22:37     Крестики-нолики
Ответ Создать тему
Опции темы

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