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

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

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

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

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

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

C++ »зучение —++
C++ »зучение C++
»зучение C++
изучение C до C++ C++
C++ »зучение
C++ и дальнейшее его пременение C++
C++ »зучение C++
ѕосле регистрации реклама в сообщени€х будет скрыта и будут доступны все возможности форума.
Sylar9
-20 / 55 / 2
–егистраци€: 04.09.2011
—ообщений: 1,906
«аписей в блоге: 1
11.02.2012, 13:29  [“—]     ƒальнейшее изучение —++ #21
÷итата —ообщение от IFree Host ѕосмотреть сообщение
ј теперь пон€тно! ¬от видишь что значит без практики быть.
Ќаписать можно что угодно.
я сейчас тетрис пишу.
¬от недавно башни хано€ написал, но правда как демку
а что ты примен€л? € ваше не знаю как графическим интерфейсом пользоватьс€, в книги не проходили
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
        }
}
Sylar9
-20 / 55 / 2
–егистраци€: 04.09.2011
—ообщений: 1,906
«аписей в блоге: 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
IFree Host
«аблокирован
11.02.2012, 13:37     ƒальнейшее изучение —++ #24
все компилируетс€. € с ним уже четвертую игрушку пишу. перва€ была морской бой.
WINAPI тут нафиг не нужен
Sylar9
-20 / 55 / 2
–егистраци€: 04.09.2011
—ообщений: 1,906
«аписей в блоге: 1
11.02.2012, 13:39  [“—]     ƒальнейшее изучение —++ #25
÷итата —ообщение от IFree Host ѕосмотреть сообщение
все компилируетс€. € с ним уже четвертую игрушку пишу. перва€ была морской бой.
WINAPI тут нафиг не нужен
а ты самоучка? Ѕилн по ходу € не когда не научусь программировать
ForEveR
ћодератор
Ёксперт —++
7958 / 4720 / 319
–егистраци€: 24.06.2010
—ообщений: 10,525
«авершенные тесты: 3
11.02.2012, 13:41     ƒальнейшее изучение —++ #26
Sylar9, ≈лы палы... ƒа изучи ты сначала плюсы нормально, потом лезь в графику...

ƒобавлено через 1 минуту
WINAPI тут нафиг не нужен
—урьезно? ј то что ты используешь HANDLE и функции из WinAPI к примеру GetStdHandle() это ничего?
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, просто ему пока ненадо об этом думать
Sylar9
-20 / 55 / 2
–егистраци€: 04.09.2011
—ообщений: 1,906
«аписей в блоге: 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
IFree Host
«аблокирован
11.02.2012, 13:50     ƒальнейшее изучение —++ #29
Visual Studio 2008
Paporotnik
11.02.2012, 13:54
  #30

Ќе по теме:

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

Sylar9
-20 / 55 / 2
–егистраци€: 04.09.2011
—ообщений: 1,906
«аписей в блоге: 1
11.02.2012, 13:54  [“—]     ƒальнейшее изучение —++ #31
÷итата —ообщение от IFree Host ѕосмотреть сообщение
Visual Studio 2008
ѕросто в 6,0 не компилируетс€
ForEveR
ћодератор
Ёксперт —++
7958 / 4720 / 319
–егистраци€: 24.06.2010
—ообщений: 10,525
«авершенные тесты: 3
11.02.2012, 14:02     ƒальнейшее изучение —++ #32
IFree Host, » кстати... —уд€ по твоему написанию кода (особенно использование классов и тем временем —и функций, макросов) тебе самому стоит еще поучить плюсы, прежде чем с графикой св€зыватьс€.... »ћ’ќ.
IFree Host
«аблокирован
11.02.2012, 14:27     ƒальнейшее изучение —++ #33
Ich bin ja aber auch Deutscher

ƒобавлено через 52 секунды
ForEveR, это € писал еще в начале семестра на чистом —
Evg
Ёксперт Cјвтор FAQ
17276 / 5530 / 345
–егистраци€: 30.03.2009
—ообщений: 15,041
«аписей в блоге: 26
11.02.2012, 14:27     ƒальнейшее изучение —++ #34
÷итата —ообщение от Sylar9 ѕосмотреть сообщение
просто € не могу пон€ть что можно написать с консольными приложени€ми, не зна€ функци€ WinApi и не могу пон€ть применение классов
1. ¬вод данных с клавиатуры
2. ¬ывод данных на экран (в консоль)
3. –абота с файлами
4. ¬ычислени€ и алгоритмы

Ётих пунктов тебе более чем хватит, чтобы пон€ть азы программировани€. Ќикакого знани€ WinApi тут не требуетс€, потому что подавл€ющее большинство задач этого класса никак не прив€заны ни к какому WinApi (да и вообще не прив€заны ни к какой конкретной операционной системе или процессору)

ѕрежде, чем пон€ть применение классов нужно научитьс€ хоть что-то и хоть как-то программировать.
ForEveR
ћодератор
Ёксперт —++
7958 / 4720 / 319
–егистраци€: 24.06.2010
—ообщений: 10,525
«авершенные тесты: 3
11.02.2012, 14:34     ƒальнейшее изучение —++ #35
это € писал еще в начале семестра на чистом —
¬ чистом — нет классов, если что. ј у вас все функции в коде графика обернуты в класс.
IFree Host
«аблокирован
11.02.2012, 14:40     ƒальнейшее изучение —++ #36
ForEveR, где? в каком месте?

ƒобавлено через 3 минуты
а вон ты о чем.
 од с башн€ми хано€ это чистый —
а класс дл€ консольной графики это € ему в качестве примера чтобы он не парилс€ по поводу того что в консоли графику нельз€ сделать.

Ќу а раз ты такой придира то как только допишу тетрис вывалю его сюда в качестве примера.
ForEveR
ћодератор
Ёксперт —++
7958 / 4720 / 319
–егистраци€: 24.06.2010
—ообщений: 10,525
«авершенные тесты: 3
11.02.2012, 14:40     ƒальнейшее изучение —++ #37
IFree Host, —ообщение є22. ѕредставленный в нем код. »спользуетс€ класс, а так же —и функции и абсолютно ненужные макросы.
я ж не придираюсь. —оветую просто так не делать. ∆ду код тетриса (=
silent_1991
Ёксперт —++
4951 / 3027 / 149
–егистраци€: 11.11.2009
—ообщений: 7,026
«авершенные тесты: 1
11.02.2012, 14:43     ƒальнейшее изучение —++ #38
Evg, проблема в том, что если читать книги по программированию, не пробу€ большинство программ, приведЄнных там в качестве примера, не измен€€ их, не вставл€€ отладочные принты и не вника€ в работу алгоритма, а просто читать по паре страниц перед сном, то из человека выйдет кто угодно, но только не программист.  ак книгу по математике надо читать с карандашом в руках, так и книгу по программированию надо читать с клавиатурой в них же. ј читать книгу по программированию просто так - убить день/неделю/мес€ц (в зависимости от скорости чтени€). “ак что мне кажетс€, что совет "бросать читать [пусть даже на данном этапе] и приступать к практике" несколько неверен, потому что если тот, кому этот совет адресован, не практиковал, чита€, то совет стоит заменить на "читай всЄ сначала, но перемешива€ с практикой", а если он и так практиковал, то вообще на "продолжай в том же духе".

Sylar9, горька€ правда: суд€ по темам, которые вы создавали на форуме, вы не усвоили ничего из того, что прочитали. ѕроблема может крытьс€ как в том, что € озвучил выше, отвеча€ ув. Evg, так и в чЄм-то другом, но, тем не менее, она существует.
IFree Host
«аблокирован
11.02.2012, 14:43     ƒальнейшее изучение —++ #39
макросы нужно было использовать как пример к изучаемой теме прекомпил€тора
потому они там и есть
Ёто ты свободный художник, а мы студенты - люди подневольные. „то профессор просит то и делаем.
MoreAnswers
Ёксперт
37091 / 29110 / 5898
–егистраци€: 17.06.2006
—ообщений: 43,301
11.02.2012, 15:33     ƒальнейшее изучение —++
≈ще ссылки по теме:

изучение с++ C++
C++ »зучение —++
изучение с++ C++
C++ »зучение —++
ѕересоздание массива в функции и дальнейшее его использование в main C++

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

»ли воспользуйтесь поиском по форуму:
Evg
Ёксперт Cјвтор FAQ
17276 / 5530 / 345
–егистраци€: 30.03.2009
—ообщений: 15,041
«аписей в блоге: 26
11.02.2012, 15:33     ƒальнейшее изучение —++ #40
÷итата —ообщение от silent_1991 ѕосмотреть сообщение
"бросать читать [пусть даже на данном этапе] и приступать к практике"
я же говорил, что не надо бросать читать. Ќа данном этапе не надо больше никаких новых книг читать. ƒа и вообще две прочитанные книги - это уже перебор, если это всЄ читалось без соответствующей практики. ј без практики дальше можно хоть 100 книг прочесть - только нифига в голове не ос€дет и реальных знаний не прибавитс€
Yandex
ќбъ€влени€
11.02.2012, 15:33     ƒальнейшее изучение —++
«акрыта€ тема —оздать тему
ќпции темы

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