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

Преобразование в матрице для игры - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить приближенную сумму ряда при фиксированном значении x двумя способами http://www.cyberforum.ru/cpp-beginners/thread1164207.html
Для функционального ряда {a}_{1}{x}^{}+{a}_{2}{x}^{2}+...+{a}_{n}{x}^{n}+...=\sum_{n=1}^{\propto }{a}_{n}{x}^{n} где {a}_{n}={(-1)}^{n}\frac{n-1}{{3}^{n}*n!} вычислить приближенную сумму при фиксированном значении x двумя способами: сумму первых n членов ряда и сумму с точностью до eps(эпсилон) в двух разных функциях: double Sum1(double x, int n); double Sum2(double x, double eps); ...
C++ В списке Р заменить первое вхождение списка Р1 (если такое есть) на список Р2 Написать программу с функциями, которая: а)в списке Р заменяет первое вхождение списка Р1( если такое есть) на список Р2; б)строит список Р1 - копию списка Р; в)добавляет в конец списка Р инвертированный список Р. http://www.cyberforum.ru/cpp-beginners/thread1164205.html
Реализовать модель ассоциативного кеша C++
Передо мной стоит задача, реализовать модель ассоциативного кеша, я решил использовать очередь с приоритетами, в ней будут храниться пары ключ-значение, ключом будет время, когда мы обращались к элементу, а значением сам элемент лежащий в кеше. В приницпе сложности в реализации нет, но зачем писать свою реализацию, если есть STL. Но возникли некторые сложности, я никак не могу найти метод поиска...
C++ Функция, поток fstream
Здравствуйте! Делаю программку по заданию (тест), все не сложно, но вот где вопрос. #include <fstream> #include <iostream> #include <windows.h> using namespace std; int main(){
C++ Передать значения вершины первого списка во второй http://www.cyberforum.ru/cpp-beginners/thread1164193.html
Доброе время суток! Сохраняя традицию: у меня проблема с программой. Функция change, в теории, должна передавать значения вершины первого списка во второй. На деле она возвращает в qp->q единицу, при этом предыдущий список испаряется. Вопрос в чем: как сделать так, что бы change изменял t1 и t2 согласно теории #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <iostream>...
C++ Поменять местами слова в строке Нужно: 1) Узнать номер первой запятой в веденном тексте - СДЕЛАНО. 2) Поменять местами первой и последнее слово - НЕ сделано. 3) Вычислить к-во пробелов подряд - СДЕЛАНО. 4) Поменять все знаки восклицания "!" на точки "." - СДЕЛАНО. 5) Поменять первое и последнее слово на заданны - НЕ СДЕЛАНО. Вот код с сделанными ф-ями, посоветуйте что-то с 2-м и 5-м пунктами, а то даже представления не... подробнее

Показать сообщение отдельно
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95

Преобразование в матрице для игры - C++

02.05.2014, 19:01. Просмотров 288. Ответов 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
void GameField::PerformMove(int direction)
{
    glutSetWindowTitle("perforn move inited");
    switch(direction)
    {
        glutSetWindowTitle("switch inited");
        case 1://if direction is up
        {
            glutSetWindowTitle("case1 inited");
            for(int i=0;i<4;i++)//for each row
            {
                glutSetWindowTitle("for i  inited");
                for(int j=3;j>1;j--)//for each column from the end
                {
                    glutSetWindowTitle("for j inited  1");
                    if((this->FieldState[j][i]) &&( this->FieldState[j-1][i]) && (this->FieldValue[j][i]==this->FieldValue[j-1][i]))
                    {
                        this->FieldValue[j-1][i]*=2;
                        this->FieldValue[j][i]=-1;
                        this->FieldState[j][i]=false;
                        j++;
                    }
                    glutSetWindowTitle("for j inited 2");
                    if((this->FieldState[j][i]) &&( this->FieldState[j-1][i]) && (this->FieldValue[j][i]!=this->FieldValue[j-1][i]))
                    {
                    }
                    glutSetWindowTitle("for j inited 3");
                    if((this->FieldState[j][i]) &&(!this->FieldState[j-1][i]))
                    {
                        this->FieldValue[j-1][i]=this->FieldValue[j][i];
                        this->FieldValue[j][i]=-1;
                        this->FieldState[j][i]=false;
                    }
                    glutSetWindowTitle("for j initiation ended");
                }//for read
                glutSetWindowTitle("for i initiation ended");
            }//for stolbets
            break;
        }//case1


У нас есть класс, в котором есть 2 матрицы(4x4)
FieldValue-значение непустой ячейки
FielsState-состояние ячейки(пустая или полная)

Мне надо чтобы при нажатии вверх ячейки сдвигались все вверх.. если есть 2 рядом стоящие ячейки с одинаковым значением, то ни сливаются в одну(х2)
Примерs для сдвига вправо


[2][2][][] -> [][][][4]
[4][4][2][2] -> [][][8][4]
[2][2][2][4] -> [][2][4][4]
[][2][][2] -> [][][][4]
[8][4][4][2] -> [][8][8][2]
[2][4][2][4] -> [2][4][2][4]

После того как произошло преобразование поле отрисовывется. У меня отрисовывается изначальное положение, я нажимаю клавишу вверх,(она нажимается) вызывается функция которая преобразует матрицу, в соответсвии с нажатой клавиший(она вызывается) и даже завершается, но ... матрица не меняется... как была, так и осталась...

Добавлено через 28 минут
почему то не срабатывает не один из if ов

Добавлено через 24 минуты
ладно происходит сдвиг влево О_о и тот не так как надо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru