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

На чем писать игру 2048 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отсортировать массив методом прямого обмена по убыванию http://www.cyberforum.ru/cpp-beginners/thread1221258.html
Для последовательности из 11 введенных с клавиатуры чисел почитать и вывести на экран разность между суммами четных и нечетных чисел. отсортировать массив методом прямого обмена по убыванию
C++ Алгоритм Флойда для поиска центра ориентированного графа Реалізувати пошук центру орієнтованого графа представленого матрицею суміжності використовуючи алгоритм Флойда. Хтось знає як це написати в Visual Studio на C++? Буду дуже вдячний) Перевожу... http://www.cyberforum.ru/cpp-beginners/thread1221256.html
Подсчет ранга прямоугольной матрицы C++
наклепал немного кода, из того, что нашел в интернете только вот вылетает при некоторых значениях и иногда неправильно считает ранг, а я не могу найти проблему в алгоритме #include <iostream>...
Перевод с Pascal в С++ C++
var A: array of integer; B: array of real; i, j, max: integer; begin writeln('Матрица 5х5 случайных чисел:'); writeln; randomize; max := 10;
C++ Вывести номерные знаки автомашин с максимальными и минимальными расходами топлива http://www.cyberforum.ru/cpp-beginners/thread1221191.html
Нужно решить задачу!!! Даны номерные знаки автомашин двух таксопарков N1, ... , N10 NN1, ... , NN15 и расходы топлива каждой из автомашин за месяц R1, ... , R10 RR1, ... , RR15 вывести...
C++ Вывести на экран произведение трехзначных чисел, сумма цифр которых четная. Вводится с клавиатуры массив целых чисел (размер массива заранее не известен, вводится с клавиатуры). Числа могут быть любыми по знаку. Вывести на экран произведение трехзначных чисел, сумма цифр... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
10.07.2014, 16:06
****

Добавлено через 5 минут
Усовершенствованный вариант (часть 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
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
/////////////////////////////////////////////////////////////////////////////////////////
//ПРАВИЛА ИГРЫ
//
//Игровое поле имеет форму квадрата 4x4.
//Целью игры является получение плитки номинала «2048» (при желании можно продолжить дальше).
//В каждом раунде появляется плитка номинала «2» (с вероятностью 90%) или «4» (с вероятностью 10%)
//Нажатием стрелки игрок может скинуть все плитки игрового поля в одну из 4 сторон. 
//Если при сбрасывании две плитки одного номинала «налетают» одна на другую, то 
//они слипаются в одну, номинал которой равен сумме соединившихся плиток. 
//Если при нажатии кнопки местоположение плиток или их номинал не изменится, то ход не совершается.
//За каждое соединение игровые очки увеличиваются на номинал получившейся плитки.
//Игра заканчивается, если после очередного хода невозможно совершить действие.
//Максимальный номинал плитки — 131 072.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <conio.h>
#include <cstdlib>
#include <ctime>
#include <fstream>
#include <functional>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <utility>
#include <vector>
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string                         T_str;
typedef std::pair       < int,   int    >   T_cell;
typedef std::vector     < T_cell        >   T_cells;
typedef std::vector     < int           >   T_row;
typedef std::vector     < T_row         >   T_matr;
/////////////////////////////////////////////////////////////////////////////////////////
class   T_game_2048
{
    //-----------------------------------------------------------------------------------
    static  int     const   MATR_DIM                =   4;
    static  char    const   CELL_VAL_EMPTY_SYMB     =   '_';
 
    static  int     const   CELL_VAL_EMPTY          =   0;
    static  int     const   CELL_VAL_MIN            =   2;
    static  int     const   CELL_VAL_MIN_TWICE      =   CELL_VAL_MIN * 2;
    static  int     const   CELL_VAL_MAX            =   131072;
 
    static  int     const   ARROW_KEY_FIRST_BYTE    =   224;
 
    static  int     const   LEFT_ARROW_KEY          =   75;
    static  int     const   RIGHT_ARROW_KEY         =   77;
    static  int     const   UP_ARROW_KEY            =   72;
    static  int     const   DOWN_ARROW_KEY          =   80;
    //===================================================================================
    class  T_records
    {
        T_str   const   &   record_file_name_;
        int                 result_;
        int                 record_;
        int                 cur_max_cell_val_;
        //-------------------------------------------------------------------------------
    public:
        //-------------------------------------------------------------------------------
        T_records( T_str   const   &   record_file_name )
            :
            record_file_name_   ( record_file_name ),
            result_             (),
            record_             (),
            cur_max_cell_val_   ()
        {
            std::ifstream   i_record_file( record_file_name_ );
 
            if( i_record_file )
            {
                i_record_file   >>  record_;
            }
        }
        //-------------------------------------------------------------------------------
        ~T_records()
        {
            std::ofstream   o_record_file( record_file_name_ );
            o_record_file   <<  record_;
        }
        //-------------------------------------------------------------------------------
        bool    cur_max_cell_val_is_valid()                                         const
        {
            return  cur_max_cell_val_ <= CELL_VAL_MAX;
        }
        //-------------------------------------------------------------------------------
        void    set_records( int    cell_val )
        {
            result_     +=  cell_val;
 
            if( result_ > record_ )
            {
                record_ = result_;
            }
 
            if( cell_val > cur_max_cell_val_ )
            {
                cur_max_cell_val_ = cell_val;
            }
        }
        //-------------------------------------------------------------------------------
        void    print()                                                             const
        {
            std::cout   <<  "Набрано очков\t"
                        <<  result_
                        <<  std::endl
                        <<  "Рекорд\t\t"
                        <<  record_
                        <<  std::endl;
        }
        //-------------------------------------------------------------------------------
    };
    //===================================================================================
    class   T_rand_cell_val_generator
    {
        T_matr  &   matr_;
        T_row       rand_cell_values_;
        T_cells     free_cells_;
        //-------------------------------------------------------------------------------
    public:
        //-------------------------------------------------------------------------------
        T_rand_cell_val_generator( T_matr  &   matr )
            :
            matr_( matr ),
 
            rand_cell_values_
            (
                9,
                CELL_VAL_MIN
            )
        {
            rand_cell_values_.push_back( CELL_VAL_MIN_TWICE );
        }
        //-------------------------------------------------------------------------------
        void    set_rand_val_into_rand_free_cell()
        {
            if  (
                    free_cells_exist()
                )
            {
                set_val_into_cell
                    (
                        get_rand_cell_val   (),
                        get_rand_free_cell  ()
                    );
            }//if
        }
        //-------------------------------------------------------------------------------
        bool    free_cells_exist()
        {
            clear_and_calculate_free_cells();
 
            return  !free_cells_.empty();
        }
        //-------------------------------------------------------------------------------
    private:
        //-------------------------------------------------------------------------------
        void    clear_and_calculate_free_cells()
        {
            free_cells_.clear();
 
            for( int  i = 0; i < MATR_DIM; ++i )
            {
                for( int  j = 0; j < MATR_DIM; ++j )
                {
                    if( matr_[i][j] == CELL_VAL_EMPTY )
                    {
                        free_cells_.push_back
                            (
                                T_cell( i, j )
                            );
                    }
                }//for
            }//for
        }
        //-------------------------------------------------------------------------------
        int     get_rand_cell_val()                                                 const
        {
            return  get_rand_elem_from_container( rand_cell_values_ );
        }
        //-------------------------------------------------------------------------------
        T_cell  get_rand_free_cell()                                                const
        {
            return  get_rand_elem_from_container( free_cells_ );
        }
        //-------------------------------------------------------------------------------
        template< typename  T_cont >
        static  typename    T_cont::value_type  get_rand_elem_from_container
            ( T_cont    const   &   cont )
        {
            return  cont[ rand() % cont.size() ];
        }
        //-------------------------------------------------------------------------------
        void    set_val_into_cell
            (
                int         val,
                T_cell      cell
            )
        {
            matr_[ cell.first ][ cell.second ]  =   val;
        }
        //-------------------------------------------------------------------------------
    };
    //===================================================================================
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru