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

—++ дл€ начинающих

¬ойти
–егистраци€
¬осстановить пароль
 
 
–ейтинг: –ейтинг темы: голосов - 22, средн€€ оценка - 4.77
Sylar9
-20 / 55 / 2
–егистраци€: 04.09.2011
—ообщений: 1,927
«аписей в блоге: 1
#1

ƒальнейшее изучение —++ - C++

11.02.2012, 11:09. ѕросмотров 2758. ќтветов 50
ћетки нет (¬се метки)

¬от хотел у вас спросить, что дальше можно почитать после Ѕь€рне —трауструп ѕрограммирование: принципы и практика использовани€ C++, и после –.Ћафоре ќќѕ в —++, планирую купить по WinApi и что то еще хотел у вас спросить что можно еще купить почитать
0
Ћучшие ответы (1)
Similar
Ёксперт
41792 / 34177 / 6122
–егистраци€: 12.04.2006
—ообщений: 57,940
11.02.2012, 11:09
«дравствуйте! я подобрал дл€ вас темы с ответами на вопрос ƒальнейшее изучение —++ (C++):

C++ и дальнейшее его пременение - C++
“оварищи! — трудом даетс€, но даетс€ —++, есть ли смысл покончить мукам конец? я учусь на программиста, но пошла туда ради PHP, Java,...

ѕересоздание массива в функции и дальнейшее его использование в main - C++
ѕочему, когда € вызываю std::cout << _list в функции, то вывод идет нормальный, а когда в main, то выводитс€ не то, что нужно ? ...

ƒальнейшее изучение - C++
ƒоброго времени суток! ѕоследнее врем€ мучает такой вопрос: что изучать дальше? ƒело в том, что мне интересна разработка компьютерных...

»зучение с++ - C++
«наю основной синтаксис + ќќѕ. „то посоветуете почитать актуального на сегодн€шний день?

изучение C до C++ - C++
объ€зательно изучить C до изучени€ C++ ?

»зучение - C++
¬сем привет. я изучаю программирование чуть меньше года (сразу начал с —и++), подскажите плз, как лучше поступать. ”чить определЄнную тему...

Ќадоела реклама? «арегистрируйтесь и она исчезнет полностью.
IFree Host
«аблокирован
11.02.2012, 13:17 #16
÷итата —ообщение от Sylar9 ѕосмотреть сообщение
а де можно практику вз€ть?
!!!
0
Sylar9
-20 / 55 / 2
–егистраци€: 04.09.2011
—ообщений: 1,927
«аписей в блоге: 1
11.02.2012, 13:17  [“—] #17
просто € не могу пон€ть что можно написать с консольными приложени€ми, не зна€ функци€ WinApi и не могу пон€ть применение классов
0
Evg
Ёксперт Cјвтор FAQ
17815 / 6025 / 388
–егистраци€: 30.03.2009
—ообщений: 16,554
«аписей в блоге: 26
11.02.2012, 13:20 #18
÷итата —ообщение от Sylar9 ѕосмотреть сообщение
а де можно практику вз€ть?
¬ посте #3 тебе уже ответили на этот вопрос
0
Sylar9
-20 / 55 / 2
–егистраци€: 04.09.2011
—ообщений: 1,927
«аписей в блоге: 1
11.02.2012, 13:22  [“—] #19
÷итата —ообщение от Evg ѕосмотреть сообщение
¬ посте #3 тебе уже ответили на этот вопрос
просто € не могу пон€ть что можно написать с консольными приложени€ми, не зна€ функци€ WinApi и не могу пон€ть применение классов
0
IFree Host
«аблокирован
11.02.2012, 13:27 #20
ј теперь пон€тно! ¬от видишь что значит без практики быть.
Ќаписать можно что угодно.
я сейчас тетрис пишу.
¬от недавно башни хано€ написал, но правда как демку
0
ћиниатюры
ƒальнейшее  изучение —++  
Sylar9
-20 / 55 / 2
–егистраци€: 04.09.2011
—ообщений: 1,927
«аписей в блоге: 1
11.02.2012, 13:29  [“—] #21
÷итата —ообщение от IFree Host ѕосмотреть сообщение
ј теперь пон€тно! ¬от видишь что значит без практики быть.
Ќаписать можно что угодно.
я сейчас тетрис пишу.
¬от недавно башни хано€ написал, но правда как демку
а что ты примен€л? € ваше не знаю как графическим интерфейсом пользоватьс€, в книги не проходили
0
IFree Host
«аблокирован
11.02.2012, 13:32 #22
Ќаписал вот такой простой графический класс, а дальше все тво€ фантази€

≈сли на самом деле все пон€л что прочел значит поймешь что к чему
а если не пон€л занимайс€ практикой


ConsolenGrafik.h

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
//    #define BLACK 0   #define RED        4    #define DARK_GRAY    8      #define LIGHT_RED     12
//    #define BLUE  1   #define MAGENTA    5    #define LIHGT_BLUE   9      #define LIGHT_MAGENTA 13
//    #define GREEN 2   #define BROWN      6    #define LIGHT_GREEN  10     #define YELLOW        14
//    #define CYAN  3   #define LIGHT_GRAY 7    #define LIGHT_CYAN   11     #define WHITE         15
 
#pragma once
 
class CConsolenGrafik
{
public:
 
    CConsolenGrafik(void);
    ~CConsolenGrafik(void);
 
    void Position(int x, int y);
    void FarbeSetzen(int i_textFarbe, int i_hintergrundFarbe);
    void ZeichenKette(int von_x, int bis_x, int i_zeile, int i_hintergrundFarbe);
    void ZeichenKette(int von_x, int bis_x, int i_zeile, int i_textFarbe, int i_hintergrundFarbe);
    void ZeichenKette(int von_x, int bis_x, int i_line, int i_zeichen, int i_textFarbe, int i_hintergrundFarbe);
    void ZeichenSpalte(int i_spalte, int von_y, int bis_y, int i_hintergrundFarbe);
    void ZeichenSpalte(int i_spalte, int von_y, int bis_y, int i_textFarbe, int i_hintergrundFarbe);
    void ZeichenSpalte(int i_spalte, int von_y, int bis_y, int i_zeichen, int i_textFarbe, int i_hintergrundFarbe);
    void Farben(int von_x, int bis_x, int von_y, int bis_y, int i_Farbe);
    void Farben(int von_x, int bis_x, int von_y, int bis_y, int i_textFarbe, int i_hintergrundFarbe);
    void Umramung(int von_x, int von_y, int bis_x, int bis_y, char type);
    void BgrFarbe(int farbe);
 
};

ConsolenGrafik.cpp

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
206
//    #define BLACK 0   #define RED        4    #define DARK_GRAY    8      #define LIGHT_RED     12
//    #define BLUE  1   #define MAGENTA    5    #define LIHGT_BLUE   9      #define LIGHT_MAGENTA 13
//    #define GREEN 2   #define BROWN      6    #define LIGHT_GREEN  10     #define YELLOW        14
//    #define CYAN  3   #define LIGHT_GRAY 7    #define LIGHT_CYAN   11     #define WHITE         15
 
#include "StdAfx.h"
#include <windows.h>
#include "ConsolenGrafik.h"
 
#define PIX printf(" ");
#define ZEICHEN(x) printf("%c", (x));
 
    HANDLE hConsole;
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
 
CConsolenGrafik::CConsolenGrafik(void)
{
}
 
CConsolenGrafik::~CConsolenGrafik(void)
{
}
 
void CConsolenGrafik::Position(int x, int y)
{
    COORD coord = { x, y };
    SetConsoleCursorPosition(hStdOut, coord);
} 
 
void CConsolenGrafik::FarbeSetzen(int i_textFarbe, int i_hintergrundFarbe)        
{
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleTextAttribute(hStdOut, (WORD)(( i_hintergrundFarbe << 4) | i_textFarbe ) );
}
 
void CConsolenGrafik::ZeichenKette(int von_x, int bis_x, int i_zeile, int i_hintergrundFarbe)        
{
   for(int i=von_x; i <= bis_x; i++ ) 
   {
       Position(i,i_zeile);
       FarbeSetzen(i_hintergrundFarbe, i_hintergrundFarbe);
       ZEICHEN(32)
   }
}
 
void CConsolenGrafik::ZeichenKette(int von_x, int bis_x, int i_zeile, int i_textFarbe, int i_hintergrundFarbe)        
{
   for(int i=von_x; i <= bis_x; i++ ) 
   {
       Position(i,i_zeile);
       FarbeSetzen(i_textFarbe, i_hintergrundFarbe);
       ZEICHEN(32)
   }
}
 
void CConsolenGrafik::ZeichenKette(int von_x, int bis_x, int i_zeile, int i_zeichen, int i_textFarbe, int i_hintergrundFarbe)        
{
   for(int i=von_x; i <= bis_x; i++ ) 
   {
       Position(i,i_zeile);
       FarbeSetzen(i_textFarbe, i_hintergrundFarbe);
       ZEICHEN(i_zeichen)
   }
}
 
void CConsolenGrafik::ZeichenSpalte(int i_spalte, int von_y, int bis_y, int i_hintergrundFarbe)        
{
   for(int i=von_y; i <= bis_y; i++ ) 
   {
       Position(i_spalte,i);
       FarbeSetzen(i_hintergrundFarbe, i_hintergrundFarbe);
       ZEICHEN(32)
   }
}
 
void CConsolenGrafik::ZeichenSpalte(int i_spalte, int von_y, int bis_y, int i_textFarbe, int i_hintergrundFarbe)        
{
   for(int i=von_y; i <= bis_y; i++ ) 
   {
       Position(i_spalte,i);
       FarbeSetzen(i_textFarbe, i_hintergrundFarbe);
       ZEICHEN(32)
   }
}
 
void CConsolenGrafik::ZeichenSpalte(int i_spalte, int von_y, int bis_y, int i_zeichen, int i_textFarbe, int i_hintergrundFarbe)        
{
   for(int i=von_y; i <= bis_y; i++ ) 
   {
       Position(i_spalte,i);
       FarbeSetzen(i_textFarbe, i_hintergrundFarbe);
       ZEICHEN(i_zeichen)
   }
}
 
void CConsolenGrafik::Farben(int von_x, int bis_x, int von_y, int bis_y, int i_Farbe)        
{
    for (int x = von_x; x <= bis_x; x++ )
        for (int y = von_y; y <= bis_y ; y++ )
        {
            Position(x,y);
            FarbeSetzen(i_Farbe, i_Farbe);
            PIX
        }
}
 
void CConsolenGrafik::Farben(int von_x, int bis_x, int von_y, int bis_y, int i_textFarbe, int i_hintergrundFarbe)        
{
    for (int x = von_x; x <= bis_x; x++ )
        for (int y = von_y; y <= bis_y ; y++ )
        {
            Position(x,y);
            FarbeSetzen(i_textFarbe, i_hintergrundFarbe);
            PIX
        }
}
 
// case 'A' 185-188 вХ£вХСвХЧвХЭ 200-206 вХЪвХФ вХ© вХ* вХР вХђ
// case 'B' 179-180 вФВвФ§   191-197 вФРвФФ вФі вФђ вФЬ вФА вФЉ  217-218 вФШвФМ
// case 'C' 181,184 вХ° вХХ  179 вФВ 190 вХЫ 198 вХЮ 205 вХР 207 вХІ 209 вХ§ 212 213 216 вХШ вХТ вХ™
// case 'D' 182,183 вХҐ вХЦ  196 вФА 189 вХЬ 186 вХС 199 вХЯ 208 вХ® 210,211, 214 вХ• вХЩ вХУ 215 вХЂ
 
void CConsolenGrafik::Umramung(int von_x, int von_y, int bis_x, int bis_y, char type)
{
    int i_zch_hor, i_zch_vert, i_zch_eck1, i_zch_eck2, i_zch_eck3, i_zch_eck4, i_zch_zweck1, i_zch_zweck2, i_zch_mitte;
 
    switch (type)
    {
    case 'A': 
        i_zch_hor = 205;  
        i_zch_vert = 186;
        i_zch_eck1 = 201;
        i_zch_eck2 = 200;
        i_zch_eck3 = 187;
        i_zch_eck4 = 188;
        i_zch_zweck1 = 204;
        i_zch_zweck2 = 185;
        i_zch_mitte = 206;
        break;
    case 'B': 
        i_zch_hor = 196;  
        i_zch_vert = 179;
        i_zch_eck1 = 218;
        i_zch_eck2 = 192;
        i_zch_eck3 = 191;
        i_zch_eck4 = 217;
        i_zch_zweck1 = 195;
        i_zch_zweck2 = 180;
        i_zch_mitte = 197;
        break;
    case 'C': 
        i_zch_hor = 205;  
        i_zch_vert = 179;
        i_zch_eck1 = 213;
        i_zch_eck2 = 212;
        i_zch_eck3 = 184;
        i_zch_eck4 = 190;
        i_zch_zweck1 = 198;
        i_zch_zweck2 = 181;
        i_zch_mitte = 216;
        break;
    case 'D': 
        i_zch_hor = 196;  
        i_zch_vert = 186;
        i_zch_eck1 = 214;
        i_zch_eck2 = 211;
        i_zch_eck3 = 183;
        i_zch_eck4 = 189;
        i_zch_zweck1 = 199;
        i_zch_zweck2 = 182;
        i_zch_mitte = 215;
        break;
    }
 
    for (int y = von_y; y <= bis_y; y += bis_y - von_y )
        for (int x = von_x + 1; x <= bis_x - 1; x++ )
        {
            Position(x,y);
            ZEICHEN(i_zch_hor)
        }
    for (int x = von_x; x <= bis_x; x += bis_x - von_x )
        for (int y = von_y + 1; y <= bis_y - 1; y++ )
        {
            Position(x,y);
            ZEICHEN(i_zch_vert)
        }
    Position(von_x,von_y);
    ZEICHEN(i_zch_eck1)
    Position(von_x,bis_y);
    ZEICHEN(i_zch_eck2)
    Position(bis_x,von_y);
    ZEICHEN(i_zch_eck3)
    Position(bis_x,bis_y);
    ZEICHEN(i_zch_eck4)
}
 
void CConsolenGrafik::BgrFarbe(int i_farbe)
{
    for (int y = 0; y <= 24; y++ )
        for (int x = 0; x <= 79 ; x++ )
        {
            Position(x,y);
            FarbeSetzen(i_farbe, i_farbe);
            PIX
        }
}
0
Sylar9
-20 / 55 / 2
–егистраци€: 04.09.2011
—ообщений: 1,927
«аписей в блоге: 1
11.02.2012, 13:35  [“—] #23
÷итата —ообщение от IFree Host ѕосмотреть сообщение
Ќаписал вот такой простой графический класс, а дальше все тво€ фантази€

≈сли на самом деле все пон€л что прочел значит поймешь что к чему

ConsolenGrafik.h

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
//    #define BLACK 0   #define RED        4    #define DARK_GRAY    8      #define LIGHT_RED     12
//    #define BLUE  1   #define MAGENTA    5    #define LIHGT_BLUE   9      #define LIGHT_MAGENTA 13
//    #define GREEN 2   #define BROWN      6    #define LIGHT_GREEN  10     #define YELLOW        14
//    #define CYAN  3   #define LIGHT_GRAY 7    #define LIGHT_CYAN   11     #define WHITE         15
 
#pragma once
 
class CConsolenGrafik
{
public:
 
    CConsolenGrafik(void);
    ~CConsolenGrafik(void);
 
    void Position(int x, int y);
    void FarbeSetzen(int i_textFarbe, int i_hintergrundFarbe);
    void ZeichenKette(int von_x, int bis_x, int i_zeile, int i_hintergrundFarbe);
    void ZeichenKette(int von_x, int bis_x, int i_zeile, int i_textFarbe, int i_hintergrundFarbe);
    void ZeichenKette(int von_x, int bis_x, int i_line, int i_zeichen, int i_textFarbe, int i_hintergrundFarbe);
    void ZeichenSpalte(int i_spalte, int von_y, int bis_y, int i_hintergrundFarbe);
    void ZeichenSpalte(int i_spalte, int von_y, int bis_y, int i_textFarbe, int i_hintergrundFarbe);
    void ZeichenSpalte(int i_spalte, int von_y, int bis_y, int i_zeichen, int i_textFarbe, int i_hintergrundFarbe);
    void Farben(int von_x, int bis_x, int von_y, int bis_y, int i_Farbe);
    void Farben(int von_x, int bis_x, int von_y, int bis_y, int i_textFarbe, int i_hintergrundFarbe);
    void Umramung(int von_x, int von_y, int bis_x, int bis_y, char type);
    void BgrFarbe(int farbe);
 
};

ConsolenGrafik.cpp

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
206
//    #define BLACK 0   #define RED        4    #define DARK_GRAY    8      #define LIGHT_RED     12
//    #define BLUE  1   #define MAGENTA    5    #define LIHGT_BLUE   9      #define LIGHT_MAGENTA 13
//    #define GREEN 2   #define BROWN      6    #define LIGHT_GREEN  10     #define YELLOW        14
//    #define CYAN  3   #define LIGHT_GRAY 7    #define LIGHT_CYAN   11     #define WHITE         15
 
#include "StdAfx.h"
#include <windows.h>
#include "ConsolenGrafik.h"
 
#define PIX printf(" ");
#define ZEICHEN(x) printf("%c", (x));
 
    HANDLE hConsole;
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
 
CConsolenGrafik::CConsolenGrafik(void)
{
}
 
CConsolenGrafik::~CConsolenGrafik(void)
{
}
 
void CConsolenGrafik::Position(int x, int y)
{
    COORD coord = { x, y };
    SetConsoleCursorPosition(hStdOut, coord);
} 
 
void CConsolenGrafik::FarbeSetzen(int i_textFarbe, int i_hintergrundFarbe)        
{
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleTextAttribute(hStdOut, (WORD)(( i_hintergrundFarbe << 4) | i_textFarbe ) );
}
 
void CConsolenGrafik::ZeichenKette(int von_x, int bis_x, int i_zeile, int i_hintergrundFarbe)        
{
   for(int i=von_x; i <= bis_x; i++ ) 
   {
       Position(i,i_zeile);
       FarbeSetzen(i_hintergrundFarbe, i_hintergrundFarbe);
       ZEICHEN(32)
   }
}
 
void CConsolenGrafik::ZeichenKette(int von_x, int bis_x, int i_zeile, int i_textFarbe, int i_hintergrundFarbe)        
{
   for(int i=von_x; i <= bis_x; i++ ) 
   {
       Position(i,i_zeile);
       FarbeSetzen(i_textFarbe, i_hintergrundFarbe);
       ZEICHEN(32)
   }
}
 
void CConsolenGrafik::ZeichenKette(int von_x, int bis_x, int i_zeile, int i_zeichen, int i_textFarbe, int i_hintergrundFarbe)        
{
   for(int i=von_x; i <= bis_x; i++ ) 
   {
       Position(i,i_zeile);
       FarbeSetzen(i_textFarbe, i_hintergrundFarbe);
       ZEICHEN(i_zeichen)
   }
}
 
void CConsolenGrafik::ZeichenSpalte(int i_spalte, int von_y, int bis_y, int i_hintergrundFarbe)        
{
   for(int i=von_y; i <= bis_y; i++ ) 
   {
       Position(i_spalte,i);
       FarbeSetzen(i_hintergrundFarbe, i_hintergrundFarbe);
       ZEICHEN(32)
   }
}
 
void CConsolenGrafik::ZeichenSpalte(int i_spalte, int von_y, int bis_y, int i_textFarbe, int i_hintergrundFarbe)        
{
   for(int i=von_y; i <= bis_y; i++ ) 
   {
       Position(i_spalte,i);
       FarbeSetzen(i_textFarbe, i_hintergrundFarbe);
       ZEICHEN(32)
   }
}
 
void CConsolenGrafik::ZeichenSpalte(int i_spalte, int von_y, int bis_y, int i_zeichen, int i_textFarbe, int i_hintergrundFarbe)        
{
   for(int i=von_y; i <= bis_y; i++ ) 
   {
       Position(i_spalte,i);
       FarbeSetzen(i_textFarbe, i_hintergrundFarbe);
       ZEICHEN(i_zeichen)
   }
}
 
void CConsolenGrafik::Farben(int von_x, int bis_x, int von_y, int bis_y, int i_Farbe)        
{
    for (int x = von_x; x <= bis_x; x++ )
        for (int y = von_y; y <= bis_y ; y++ )
        {
            Position(x,y);
            FarbeSetzen(i_Farbe, i_Farbe);
            PIX
        }
}
 
void CConsolenGrafik::Farben(int von_x, int bis_x, int von_y, int bis_y, int i_textFarbe, int i_hintergrundFarbe)        
{
    for (int x = von_x; x <= bis_x; x++ )
        for (int y = von_y; y <= bis_y ; y++ )
        {
            Position(x,y);
            FarbeSetzen(i_textFarbe, i_hintergrundFarbe);
            PIX
        }
}
 
// case 'A' 185-188 вХ£вХСвХЧвХЭ 200-206 вХЪвХФ вХ© вХ* вХР вХђ
// case 'B' 179-180 вФВвФ§   191-197 вФРвФФ вФі вФђ вФЬ вФА вФЉ  217-218 вФШвФМ
// case 'C' 181,184 вХ° вХХ  179 вФВ 190 вХЫ 198 вХЮ 205 вХР 207 вХІ 209 вХ§ 212 213 216 вХШ вХТ вХ™
// case 'D' 182,183 вХҐ вХЦ  196 вФА 189 вХЬ 186 вХС 199 вХЯ 208 вХ® 210,211, 214 вХ• вХЩ вХУ 215 вХЂ
 
void CConsolenGrafik::Umramung(int von_x, int von_y, int bis_x, int bis_y, char type)
{
    int i_zch_hor, i_zch_vert, i_zch_eck1, i_zch_eck2, i_zch_eck3, i_zch_eck4, i_zch_zweck1, i_zch_zweck2, i_zch_mitte;
 
    switch (type)
    {
    case 'A': 
        i_zch_hor = 205;  
        i_zch_vert = 186;
        i_zch_eck1 = 201;
        i_zch_eck2 = 200;
        i_zch_eck3 = 187;
        i_zch_eck4 = 188;
        i_zch_zweck1 = 204;
        i_zch_zweck2 = 185;
        i_zch_mitte = 206;
        break;
    case 'B': 
        i_zch_hor = 196;  
        i_zch_vert = 179;
        i_zch_eck1 = 218;
        i_zch_eck2 = 192;
        i_zch_eck3 = 191;
        i_zch_eck4 = 217;
        i_zch_zweck1 = 195;
        i_zch_zweck2 = 180;
        i_zch_mitte = 197;
        break;
    case 'C': 
        i_zch_hor = 205;  
        i_zch_vert = 179;
        i_zch_eck1 = 213;
        i_zch_eck2 = 212;
        i_zch_eck3 = 184;
        i_zch_eck4 = 190;
        i_zch_zweck1 = 198;
        i_zch_zweck2 = 181;
        i_zch_mitte = 216;
        break;
    case 'D': 
        i_zch_hor = 196;  
        i_zch_vert = 186;
        i_zch_eck1 = 214;
        i_zch_eck2 = 211;
        i_zch_eck3 = 183;
        i_zch_eck4 = 189;
        i_zch_zweck1 = 199;
        i_zch_zweck2 = 182;
        i_zch_mitte = 215;
        break;
    }
 
    for (int y = von_y; y <= bis_y; y += bis_y - von_y )
        for (int x = von_x + 1; x <= bis_x - 1; x++ )
        {
            Position(x,y);
            ZEICHEN(i_zch_hor)
        }
    for (int x = von_x; x <= bis_x; x += bis_x - von_x )
        for (int y = von_y + 1; y <= bis_y - 1; y++ )
        {
            Position(x,y);
            ZEICHEN(i_zch_vert)
        }
    Position(von_x,von_y);
    ZEICHEN(i_zch_eck1)
    Position(von_x,bis_y);
    ZEICHEN(i_zch_eck2)
    Position(bis_x,von_y);
    ZEICHEN(i_zch_eck3)
    Position(bis_x,bis_y);
    ZEICHEN(i_zch_eck4)
}
 
void CConsolenGrafik::BgrFarbe(int i_farbe)
{
    for (int y = 0; y <= 24; y++ )
        for (int x = 0; x <= 79 ; x++ )
        {
            Position(x,y);
            FarbeSetzen(i_farbe, i_farbe);
            PIX
        }
}
а он компилируетс€? ты тут тоже примен€ещ WINAPI
0
IFree Host
«аблокирован
11.02.2012, 13:37 #24
все компилируетс€. € с ним уже четвертую игрушку пишу. перва€ была морской бой.
WINAPI тут нафиг не нужен
0
Sylar9
-20 / 55 / 2
–егистраци€: 04.09.2011
—ообщений: 1,927
«аписей в блоге: 1
11.02.2012, 13:39  [“—] #25
÷итата —ообщение от IFree Host ѕосмотреть сообщение
все компилируетс€. € с ним уже четвертую игрушку пишу. перва€ была морской бой.
WINAPI тут нафиг не нужен
а ты самоучка? Ѕилн по ходу € не когда не научусь программировать
0
ForEveR
¬ астрале
Ёксперт —++
7972 / 4734 / 321
–егистраци€: 24.06.2010
—ообщений: 10,541
«авершенные тесты: 3
11.02.2012, 13:41 #26
Sylar9, ≈лы палы... ƒа изучи ты сначала плюсы нормально, потом лезь в графику...

ƒобавлено через 1 минуту
WINAPI тут нафиг не нужен
—урьезно? ј то что ты используешь HANDLE и функции из WinAPI к примеру GetStdHandle() это ничего?
0
IFree Host
«аблокирован
11.02.2012, 13:48 #27
—лушай, программирование выгл€дит так.
≈сть данные которые ты вводишь, они обрабатываютс€ и вывод€тс€ обратно
все это только численные значени€ и команды. “о есть люба€ графическа€ программа если убрать всю графику это только набор вход€щих и выход€щих численых значений. Ёто ты должен был пон€ть чита€ книгу Ћафорте. ≈сли не пон€л читай еще раз.

¬от тебе код тех же башен ’ано€ прочтешь и сразу разберешьс€

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
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
// Hanoiturm.cpp : Defines the entry point for the console application.
//
//    Farben in Console:
//
//    Black         = 0,    Red           = 4,  DarkGray      = 8,      LightRed      = 12,
//    Blue          = 1,    Magenta       = 5,  LightBlue     = 9,      LightMagenta  = 13,
//    Green         = 2,    Brown         = 6,  LightGreen    = 10,     Yellow        = 14,
//    Cyan          = 3,    LightGray     = 7,  LightCyan     = 11,     White         = 15
 
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#include <math.h>
 
#define PIX printf(" ");
#define ZEICHEN(x) printf("%c", (x));
 
const int LAVEL = 10;
const int STANGE = 3;
 
int ScheibenPos[LAVEL][STANGE];
 
HANDLE hConsole;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
 
// Zeile
char c_zeile[256];
 
// Konvertiert Text aus ANSI ins OEM 
char *Deutsch(char *c_zeile_convert)
{ 
    AnsiToOem(c_zeile_convert, c_zeile); 
    return c_zeile; 
} 
 
void Gehe_zum_Feld(int x, int y)
{
    COORD coord = { x, y };
    SetConsoleCursorPosition(hStdOut, coord);
} 
 
void Setze_Farbe(int i_textFarbe, int i_hintergrundFarbe)        
{
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleTextAttribute(hStdOut, (WORD)(( i_hintergrundFarbe << 4) | i_textFarbe ) );
}
 
void Setze_ZeichenKette(int von_x, int bis_x, int i_line, int i_zeichen, int i_textFarbe, int i_hintergrundFarbe)        
{
   for(int i=von_x; i <= bis_x; i++ ) 
   {
       Gehe_zum_Feld(i,i_line);
       Setze_Farbe(i_textFarbe, i_hintergrundFarbe);
       ZEICHEN(i_zeichen)
   }
}
 
void Setze_Farbe_Von_Bis(int von_x, int bis_x, int von_y, int bis_y, int i_textFarbe, int i_hintergrundFarbe)        
{
    for (int x = von_x; x <= bis_x; x++ )
        for (int y = von_y; y <= bis_y ; y++ )
        {
            Gehe_zum_Feld(x,y);
            Setze_Farbe(i_textFarbe, i_hintergrundFarbe);
            PIX
        }
}
 
void Zeichne_Brett(int x_location, int y_location)
{
    for (int i=0, x = 1+x_location; i<10 ,x < x_location+30; i++, x = x+3 )
        for (int j=0, y = 1+y_location; j<10 , y < y_location+21 ; j++, y=y+2 )
        {
            if((j+i)%2!=0) 
            {
                Setze_Farbe_Von_Bis(x,x+2,y,y+1,0,1);
            } 
            else
            {
                Setze_Farbe_Von_Bis(x,x+2,y,y+1,0,9);
            }
        }
}
 
 
void Verschiebe_Scheibe(int i_von, int i_nach)
{
    int i_scheibe;
    int i_position,
        i_level,
        i_breite;
 
    switch(i_von)
    {
        case 1: i_position = 6; break;
        case 2: i_position = 28; break;
        case 3: i_position = 51; break;
    }
 
    // i_level =  22 - i // i 22 = 0 12 = 9 22-9 13
 
 
    for (int i = 9; i >= 0; i--) 
    {
        if(ScheibenPos[i][i_von-1] != 0)
        {
            i_scheibe = ScheibenPos[i][i_von-1];
            ScheibenPos[i][i_von-1] = 0;
            i_level =  22 - i;
            Setze_ZeichenKette(i_position, i_position + 21, i_level, 32, 15, 15);
            switch(i_nach)
            {
                case 1: i_position = 7; break;
                case 2: i_position = 29; break;
                case 3: i_position = 52; break;
            }
            for (int j = 9; j >= 0; j--) 
            {
 
 
    //Setze_ZeichenKette(29,50-1,22,32,14,9);
    //Setze_ZeichenKette(52,73-1,22,32,14,9);
 
                if(j == 0 && ScheibenPos[0][i_nach-1] == 0) 
                {
                    i_level =  22 - j;
                    i_breite = i_scheibe * 2;
                    i_position +=10; 
                    Setze_ZeichenKette(i_position-i_scheibe, i_position -i_scheibe + i_breite, i_level, 32, 15-i_scheibe, 15-i_scheibe);
                    ScheibenPos[0][i_nach-1] = i_scheibe;
                    Sleep(500);
                    break;
                }
                if(ScheibenPos[j][i_nach-1]!= 0)
                {
                    i_level =  22 - j-1;
                    i_breite = i_scheibe * 2;
                    i_position +=10; 
                    Setze_ZeichenKette(i_position-i_scheibe, i_position -i_scheibe + i_breite, i_level, 32, 15-i_scheibe, 15-i_scheibe);
                    ScheibenPos[j+1][i_nach-1] = i_scheibe;
                    Sleep(500);
                    break;
                }
            }
            break;
        }
    }
}
 
void RingVerschieben(int i_RingeZahl,int i_stange1,int i_stange2,int i_stange3)
{
    if (i_RingeZahl==1) // wenn letzter Ring ist erreicht
    {
        Verschiebe_Scheibe(i_stange1, i_stange3);
        //printf("%i %i \n",i_stange1,i_stange3);
    }
    else
        {       
                RingVerschieben ( i_RingeZahl-1, i_stange1, i_stange3, i_stange2);
                Verschiebe_Scheibe(i_stange1, i_stange3);
                //printf("%i %i \n",i_stange1,i_stange3);
                RingVerschieben ( i_RingeZahl-1, i_stange2, i_stange1, i_stange3);
        
        }               
}
 
void Zeichne_Umrahmung()
{
    Gehe_zum_Feld(5,2); 
    Setze_Farbe(8, 7);
    ZEICHEN(201)
 
        Setze_ZeichenKette(6,74,2,205,8,7);
 
    Gehe_zum_Feld(74,2);    
    Setze_Farbe(6, 7);
    ZEICHEN(187)
 
    Gehe_zum_Feld(5,23);    
    Setze_Farbe(8, 7);
    ZEICHEN(200)
 
        Setze_ZeichenKette(6,74,23,205,8,7);
 
    Gehe_zum_Feld(74,23);   
    Setze_Farbe(8, 7);
    ZEICHEN(188)
 
        for (int y = 3; y < 23 ; y++ )
        {
            Setze_ZeichenKette(5,5,y,186,8,7);
            Setze_ZeichenKette(74,74,y,186,8,7);
        }
}
 
void Zeichne_Stange(int x_location, int y_location)
{
        for (int j=0, y = 1+y_location; j<10 , y < y_location+18 ; j++, y=y+2 )
        {
            Setze_Farbe_Von_Bis(x_location,x_location,y,y+1,0,8);
        }
}
 
void BerechneZuge(int i_Ringe, float (&i_StangenVerschiebung)[60], int i_Ausgabe) 
{
    i_StangenVerschiebung[0] = 0;
    for(int i = 1; i <= i_Ringe; i++)
    {
        i_StangenVerschiebung[i]= 2 * (i_StangenVerschiebung[i-1]+1)-1;
    }
    Gehe_zum_Feld(6,1);
    Setze_Farbe(8, 7);
    printf("%s: %.0f\n", Deutsch("Mininimale Zahl der Bewegungen√ґ√§√Я√Љ"), i_StangenVerschiebung[i_Ausgabe] );
};
 
void BerechneZuge(int i_Ausgabe) 
{
    float f_StangenVerschiebung[61];
    float f_Time;
    float f_sec, f_min, f_hour, f_days, f_secR, f_minR, f_hourR, f_daysR, f_year;
 
    f_StangenVerschiebung[0] = 0;
    for(int i = 1; i < 61; i++)
    {
        f_StangenVerschiebung[i]= 2 * (f_StangenVerschiebung[i-1]+1)-1;
    }
    Gehe_zum_Feld(10,5);
    Setze_Farbe(4, 15);
    printf("%s: %.0f", Deutsch("Mininimale Zahl der Bewegungen"), f_StangenVerschiebung[i_Ausgabe] );
    Gehe_zum_Feld(10,7);
    Setze_Farbe(4, 15);
    printf("Bei einer Bewegung pro 1/10 Secunde dauert die Darstellung:");
 
    f_sec =  f_StangenVerschiebung[i_Ausgabe] / 10;
    f_secR = fmod(f_sec, 60);
    f_min =  (f_sec - f_secR)/60;
    f_minR = fmod(f_min, 60);
    f_hour = (f_min - f_minR)/60;
    f_hourR = fmod(f_hour, 24);
    f_days = (f_hour - f_hourR)/24;
    f_daysR = fmod(f_days, 365);
    f_year = (f_days - f_daysR)/365;
 
    Gehe_zum_Feld(22,12);
    printf("%.0f Jahre",f_year);
    Gehe_zum_Feld(22,13);
    printf("%.0f Tage", f_daysR);
    Gehe_zum_Feld(22,14);
    printf("%.0f Stunden",f_hourR);
    Gehe_zum_Feld(22,15);
    printf("%.0f Minuten",f_minR);
    Gehe_zum_Feld(22,16);
    printf("%.0f Sekunden",f_secR);
    
 
};
 
void Zeichne_Brett()
{
    Setze_Farbe_Von_Bis(0,79,0,24,0,7);
    Zeichne_Umrahmung();
    Setze_Farbe_Von_Bis(6,27,3,22,0,15);
    Setze_Farbe_Von_Bis(28,50,3,22,0,15);
    Setze_Farbe_Von_Bis(51,73,3,22,0,15);
    
    //Zeichne_Stange(16,4);
    //Zeichne_Stange(37,4);
    //Zeichne_Stange(58,4);
    Gehe_zum_Feld(0,0);
}
 
int Meldung( int i_meldungIndex)
{
    int i_Input = 0;
    char c_Input;
 
    Setze_Farbe_Von_Bis(18, 60, 10, 15, 14, 9);
    Setze_ZeichenKette(18, 60, 9, 196, 14, 9);
    switch(i_meldungIndex)
    {
    case 0: 
        Gehe_zum_Feld(22,11); 
        printf("Geben Sie Anzahl der Scheiben ein: "); 
        Gehe_zum_Feld(39,13); 
        scanf("%i", &i_Input);
        fflush(stdin);
        return i_Input;
        break;
    case 1: 
        Gehe_zum_Feld(19,11); 
        printf("Drucken Sie Eingabetaste um neu zu starten"); 
        Gehe_zum_Feld(22,12);
        printf("oder ESC um das program zu verlassen");
        c_Input = getch();
        return (int)c_Input;
        break;
    }
 
    Gehe_zum_Feld(39,22);
}
 
void Zeichne_Alle_Scheiben(int i_Ausgabe)
{
    int i_ScheibenBreite = 0,
        i_Position = 0,
        i_Farbe = 0,
        i_Level = 22;
 
    Zeichne_Brett();
 
    for (int i = i_Ausgabe; i > 0; i--)
    {
        i_ScheibenBreite = i*2;
        i_Position = 17 - i;
        i_Farbe = 15 - i;
        Setze_ZeichenKette(i_Position, i_Position+i_ScheibenBreite-1, i_Level--, 32, 0 ,i_Farbe);
    }
    //Setze_ZeichenKette(29,50-1,22,32,14,9);
    //Setze_ZeichenKette(52,73-1,22,32,14,9);
}
 
void Zeige_Antwort(int i_Ausgabe)
{
    Setze_Farbe_Von_Bis(8,70,2,23,0,15);
    Zeichne_Umrahmung();
    Gehe_zum_Feld(15,4);
    BerechneZuge(i_Ausgabe);
}
 
void main()
{
    int i_stange1=1,
        i_stange2=2,
        i_stange3=3,
        i_Anzahl;
    float i_StangenVerschiebung[60];
 
    do
    {
        Zeichne_Brett();
        i_Anzahl = Meldung(0);
        if(i_Anzahl < 11)
        {
            Zeichne_Alle_Scheiben(i_Anzahl);
            BerechneZuge(60, i_StangenVerschiebung, i_Anzahl);
            
            for(int i = i_Anzahl-1, j = 1 ; i >= 0; i--, j++) ScheibenPos[i][0] = j;
            Sleep(1000);
            RingVerschieben ( i_Anzahl, i_stange1, i_stange2, i_stange3);
            i_Anzahl = Meldung(1);
        }
        else
        {
            if(i_Anzahl <= 60)Zeige_Antwort(i_Anzahl);
            getchar();
            i_Anzahl = Meldung(1);
        }
        
        for(int i = 9; i >= 0; i--) 
        {
            ScheibenPos[i][0] = 0;
            ScheibenPos[i][1] = 0;
            ScheibenPos[i][2] = 0;
        }
    } while (i_Anzahl != 27);
}
ƒобавлено через 59 секунд
ForEveR, просто ему пока ненадо об этом думать
0
Sylar9
-20 / 55 / 2
–егистраци€: 04.09.2011
—ообщений: 1,927
«аписей в блоге: 1
11.02.2012, 13:48  [“—] #28
÷итата —ообщение от IFree Host ѕосмотреть сообщение
—лушай, программирование выгл€дит так.
≈сть данные которые ты вводишь, они обрабатываютс€ и вывод€тс€ обратно
все это только численные значени€ и команды. “о есть люба€ графическа€ программа если убрать всю графику это только набор вход€щих и выход€щих численых значений. Ёто ты должен был пон€ть чита€ книгу Ћафорте. ≈сли не пон€л читай еще раз.

¬от тебе код тех же башен ’ано€ прочтешь и сразу разберешьс€

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
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
// Hanoiturm.cpp : Defines the entry point for the console application.
//
//    Farben in Console:
//
//    Black         = 0,    Red           = 4,  DarkGray      = 8,      LightRed      = 12,
//    Blue          = 1,    Magenta       = 5,  LightBlue     = 9,      LightMagenta  = 13,
//    Green         = 2,    Brown         = 6,  LightGreen    = 10,     Yellow        = 14,
//    Cyan          = 3,    LightGray     = 7,  LightCyan     = 11,     White         = 15
 
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#include <math.h>
 
#define PIX printf(" ");
#define ZEICHEN(x) printf("%c", (x));
 
const int LAVEL = 10;
const int STANGE = 3;
 
int ScheibenPos[LAVEL][STANGE];
 
HANDLE hConsole;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
 
// Zeile
char c_zeile[256];
 
// Konvertiert Text aus ANSI ins OEM 
char *Deutsch(char *c_zeile_convert)
{ 
    AnsiToOem(c_zeile_convert, c_zeile); 
    return c_zeile; 
} 
 
void Gehe_zum_Feld(int x, int y)
{
    COORD coord = { x, y };
    SetConsoleCursorPosition(hStdOut, coord);
} 
 
void Setze_Farbe(int i_textFarbe, int i_hintergrundFarbe)        
{
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleTextAttribute(hStdOut, (WORD)(( i_hintergrundFarbe << 4) | i_textFarbe ) );
}
 
void Setze_ZeichenKette(int von_x, int bis_x, int i_line, int i_zeichen, int i_textFarbe, int i_hintergrundFarbe)        
{
   for(int i=von_x; i <= bis_x; i++ ) 
   {
       Gehe_zum_Feld(i,i_line);
       Setze_Farbe(i_textFarbe, i_hintergrundFarbe);
       ZEICHEN(i_zeichen)
   }
}
 
void Setze_Farbe_Von_Bis(int von_x, int bis_x, int von_y, int bis_y, int i_textFarbe, int i_hintergrundFarbe)        
{
    for (int x = von_x; x <= bis_x; x++ )
        for (int y = von_y; y <= bis_y ; y++ )
        {
            Gehe_zum_Feld(x,y);
            Setze_Farbe(i_textFarbe, i_hintergrundFarbe);
            PIX
        }
}
 
void Zeichne_Brett(int x_location, int y_location)
{
    for (int i=0, x = 1+x_location; i<10 ,x < x_location+30; i++, x = x+3 )
        for (int j=0, y = 1+y_location; j<10 , y < y_location+21 ; j++, y=y+2 )
        {
            if((j+i)%2!=0) 
            {
                Setze_Farbe_Von_Bis(x,x+2,y,y+1,0,1);
            } 
            else
            {
                Setze_Farbe_Von_Bis(x,x+2,y,y+1,0,9);
            }
        }
}
 
 
void Verschiebe_Scheibe(int i_von, int i_nach)
{
    int i_scheibe;
    int i_position,
        i_level,
        i_breite;
 
    switch(i_von)
    {
        case 1: i_position = 6; break;
        case 2: i_position = 28; break;
        case 3: i_position = 51; break;
    }
 
    // i_level =  22 - i // i 22 = 0 12 = 9 22-9 13
 
 
    for (int i = 9; i >= 0; i--) 
    {
        if(ScheibenPos[i][i_von-1] != 0)
        {
            i_scheibe = ScheibenPos[i][i_von-1];
            ScheibenPos[i][i_von-1] = 0;
            i_level =  22 - i;
            Setze_ZeichenKette(i_position, i_position + 21, i_level, 32, 15, 15);
            switch(i_nach)
            {
                case 1: i_position = 7; break;
                case 2: i_position = 29; break;
                case 3: i_position = 52; break;
            }
            for (int j = 9; j >= 0; j--) 
            {
 
 
    //Setze_ZeichenKette(29,50-1,22,32,14,9);
    //Setze_ZeichenKette(52,73-1,22,32,14,9);
 
                if(j == 0 && ScheibenPos[0][i_nach-1] == 0) 
                {
                    i_level =  22 - j;
                    i_breite = i_scheibe * 2;
                    i_position +=10; 
                    Setze_ZeichenKette(i_position-i_scheibe, i_position -i_scheibe + i_breite, i_level, 32, 15-i_scheibe, 15-i_scheibe);
                    ScheibenPos[0][i_nach-1] = i_scheibe;
                    Sleep(500);
                    break;
                }
                if(ScheibenPos[j][i_nach-1]!= 0)
                {
                    i_level =  22 - j-1;
                    i_breite = i_scheibe * 2;
                    i_position +=10; 
                    Setze_ZeichenKette(i_position-i_scheibe, i_position -i_scheibe + i_breite, i_level, 32, 15-i_scheibe, 15-i_scheibe);
                    ScheibenPos[j+1][i_nach-1] = i_scheibe;
                    Sleep(500);
                    break;
                }
            }
            break;
        }
    }
}
 
void RingVerschieben(int i_RingeZahl,int i_stange1,int i_stange2,int i_stange3)
{
    if (i_RingeZahl==1) // wenn letzter Ring ist erreicht
    {
        Verschiebe_Scheibe(i_stange1, i_stange3);
        //printf("%i %i \n",i_stange1,i_stange3);
    }
    else
        {       
                RingVerschieben ( i_RingeZahl-1, i_stange1, i_stange3, i_stange2);
                Verschiebe_Scheibe(i_stange1, i_stange3);
                //printf("%i %i \n",i_stange1,i_stange3);
                RingVerschieben ( i_RingeZahl-1, i_stange2, i_stange1, i_stange3);
        
        }               
}
 
void Zeichne_Umrahmung()
{
    Gehe_zum_Feld(5,2); 
    Setze_Farbe(8, 7);
    ZEICHEN(201)
 
        Setze_ZeichenKette(6,74,2,205,8,7);
 
    Gehe_zum_Feld(74,2);    
    Setze_Farbe(6, 7);
    ZEICHEN(187)
 
    Gehe_zum_Feld(5,23);    
    Setze_Farbe(8, 7);
    ZEICHEN(200)
 
        Setze_ZeichenKette(6,74,23,205,8,7);
 
    Gehe_zum_Feld(74,23);   
    Setze_Farbe(8, 7);
    ZEICHEN(188)
 
        for (int y = 3; y < 23 ; y++ )
        {
            Setze_ZeichenKette(5,5,y,186,8,7);
            Setze_ZeichenKette(74,74,y,186,8,7);
        }
}
 
void Zeichne_Stange(int x_location, int y_location)
{
        for (int j=0, y = 1+y_location; j<10 , y < y_location+18 ; j++, y=y+2 )
        {
            Setze_Farbe_Von_Bis(x_location,x_location,y,y+1,0,8);
        }
}
 
void BerechneZuge(int i_Ringe, float (&i_StangenVerschiebung)[60], int i_Ausgabe) 
{
    i_StangenVerschiebung[0] = 0;
    for(int i = 1; i <= i_Ringe; i++)
    {
        i_StangenVerschiebung[i]= 2 * (i_StangenVerschiebung[i-1]+1)-1;
    }
    Gehe_zum_Feld(6,1);
    Setze_Farbe(8, 7);
    printf("%s: %.0f\n", Deutsch("Mininimale Zahl der Bewegungen√ґ√§√Я√Љ"), i_StangenVerschiebung[i_Ausgabe] );
};
 
void BerechneZuge(int i_Ausgabe) 
{
    float f_StangenVerschiebung[61];
    float f_Time;
    float f_sec, f_min, f_hour, f_days, f_secR, f_minR, f_hourR, f_daysR, f_year;
 
    f_StangenVerschiebung[0] = 0;
    for(int i = 1; i < 61; i++)
    {
        f_StangenVerschiebung[i]= 2 * (f_StangenVerschiebung[i-1]+1)-1;
    }
    Gehe_zum_Feld(10,5);
    Setze_Farbe(4, 15);
    printf("%s: %.0f", Deutsch("Mininimale Zahl der Bewegungen"), f_StangenVerschiebung[i_Ausgabe] );
    Gehe_zum_Feld(10,7);
    Setze_Farbe(4, 15);
    printf("Bei einer Bewegung pro 1/10 Secunde dauert die Darstellung:");
 
    f_sec =  f_StangenVerschiebung[i_Ausgabe] / 10;
    f_secR = fmod(f_sec, 60);
    f_min =  (f_sec - f_secR)/60;
    f_minR = fmod(f_min, 60);
    f_hour = (f_min - f_minR)/60;
    f_hourR = fmod(f_hour, 24);
    f_days = (f_hour - f_hourR)/24;
    f_daysR = fmod(f_days, 365);
    f_year = (f_days - f_daysR)/365;
 
    Gehe_zum_Feld(22,12);
    printf("%.0f Jahre",f_year);
    Gehe_zum_Feld(22,13);
    printf("%.0f Tage", f_daysR);
    Gehe_zum_Feld(22,14);
    printf("%.0f Stunden",f_hourR);
    Gehe_zum_Feld(22,15);
    printf("%.0f Minuten",f_minR);
    Gehe_zum_Feld(22,16);
    printf("%.0f Sekunden",f_secR);
    
 
};
 
void Zeichne_Brett()
{
    Setze_Farbe_Von_Bis(0,79,0,24,0,7);
    Zeichne_Umrahmung();
    Setze_Farbe_Von_Bis(6,27,3,22,0,15);
    Setze_Farbe_Von_Bis(28,50,3,22,0,15);
    Setze_Farbe_Von_Bis(51,73,3,22,0,15);
    
    //Zeichne_Stange(16,4);
    //Zeichne_Stange(37,4);
    //Zeichne_Stange(58,4);
    Gehe_zum_Feld(0,0);
}
 
int Meldung( int i_meldungIndex)
{
    int i_Input = 0;
    char c_Input;
 
    Setze_Farbe_Von_Bis(18, 60, 10, 15, 14, 9);
    Setze_ZeichenKette(18, 60, 9, 196, 14, 9);
    switch(i_meldungIndex)
    {
    case 0: 
        Gehe_zum_Feld(22,11); 
        printf("Geben Sie Anzahl der Scheiben ein: "); 
        Gehe_zum_Feld(39,13); 
        scanf("%i", &i_Input);
        fflush(stdin);
        return i_Input;
        break;
    case 1: 
        Gehe_zum_Feld(19,11); 
        printf("Drucken Sie Eingabetaste um neu zu starten"); 
        Gehe_zum_Feld(22,12);
        printf("oder ESC um das program zu verlassen");
        c_Input = getch();
        return (int)c_Input;
        break;
    }
 
    Gehe_zum_Feld(39,22);
}
 
void Zeichne_Alle_Scheiben(int i_Ausgabe)
{
    int i_ScheibenBreite = 0,
        i_Position = 0,
        i_Farbe = 0,
        i_Level = 22;
 
    Zeichne_Brett();
 
    for (int i = i_Ausgabe; i > 0; i--)
    {
        i_ScheibenBreite = i*2;
        i_Position = 17 - i;
        i_Farbe = 15 - i;
        Setze_ZeichenKette(i_Position, i_Position+i_ScheibenBreite-1, i_Level--, 32, 0 ,i_Farbe);
    }
    //Setze_ZeichenKette(29,50-1,22,32,14,9);
    //Setze_ZeichenKette(52,73-1,22,32,14,9);
}
 
void Zeige_Antwort(int i_Ausgabe)
{
    Setze_Farbe_Von_Bis(8,70,2,23,0,15);
    Zeichne_Umrahmung();
    Gehe_zum_Feld(15,4);
    BerechneZuge(i_Ausgabe);
}
 
void main()
{
    int i_stange1=1,
        i_stange2=2,
        i_stange3=3,
        i_Anzahl;
    float i_StangenVerschiebung[60];
 
    do
    {
        Zeichne_Brett();
        i_Anzahl = Meldung(0);
        if(i_Anzahl < 11)
        {
            Zeichne_Alle_Scheiben(i_Anzahl);
            BerechneZuge(60, i_StangenVerschiebung, i_Anzahl);
            
            for(int i = i_Anzahl-1, j = 1 ; i >= 0; i--, j++) ScheibenPos[i][0] = j;
            Sleep(1000);
            RingVerschieben ( i_Anzahl, i_stange1, i_stange2, i_stange3);
            i_Anzahl = Meldung(1);
        }
        else
        {
            if(i_Anzahl <= 60)Zeige_Antwort(i_Anzahl);
            getchar();
            i_Anzahl = Meldung(1);
        }
        
        for(int i = 9; i >= 0; i--) 
        {
            ScheibenPos[i][0] = 0;
            ScheibenPos[i][1] = 0;
            ScheibenPos[i][2] = 0;
        }
    } while (i_Anzahl != 27);
}
ƒобавлено через 59 секунд
ForEveR, просто ему пока ненадо об этом думать
а тетрис ты в чем компилировал?
ћне еще две главы читать Ћафоре 14 и 15
0
IFree Host
«аблокирован
11.02.2012, 13:50 #29
Visual Studio 2008
0
Paporotnik
11.02.2012, 13:54     ƒальнейшее изучение —++
  #30

Ќе по теме:

IFree Host, а ты всегда имена придумываешь на немецком?)) Das ist sehr seltsame Praktik)

0
MoreAnswers
Ёксперт
37091 / 29110 / 5898
–егистраци€: 17.06.2006
—ообщений: 43,301
11.02.2012, 13:54
ѕривет! ¬от еще темы с ответами:

изучение с++ - C++
нужно ли знать — чтобы учить —++?

»зучение C++ - C++
»зучаю €зык —++ два мес€ца с небольшим, пока решил это делать самосто€тельно, нашел на ётубе серию уроков, каждый урок в точности...

»зучение —++ - C++
ƒоброго времени суток! –ешил изучать яѕ —++. ѕосоветуйте уроки, статьи дл€ изучение этого €зыка. ∆елательно без книг, т.е. по книгам...

»зучение - C++
—ейчас € учу с++ и delphi, правильно ли будет учить эти €зык так : например одинаковые темы (классы и т.д) и одновременно их учить? » какой...


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

»ли воспользуйтесь поиском по форуму:
Yandex
ќбъ€влени€
11.02.2012, 13:54
«акрыта€ тема —оздать тему
ќпции темы

 ибер‘орум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
–ейтинг@Mail.ru