big c++ project

ok so i'm programming with dev-c++ and i cant think of anyway to make this
not flicker like it does. all i know is to do it like this i wouldnt know
how to JUST clear the player and not the screen any help would be great thanks
in advance. and i know im using printf but its still in c++
this is my code
i dont want to continue any further with the game until i stop the flickering
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

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#include <conio.h>

#define KEY_UP 72
#define KEY_DOWN 80
#define KEY_LEFT 75
#define KEY_RIGHT 77
#define KEY_Z 122
#define KEY_ENTER 13

#define Sleep Sleep(50);
int littlepotion;
int bigpotion;

int bronzesword;
int ironsword;
int goldsword;
int legendarysword;

int position = 1000;
int cancontinue=0;
int wait=0;

int hp = 10;

char name[20];
char player = 1;
char arrowup = 24;
char arrowdown = 25;
char arrowleft =27;
char arrowright = 26;
char input;
char pack[5];
 
int x = 3;
int y;
void gotoxy(short x,short y);
void gotoxy(int x,int y)
{COORD coord = {x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);}
//now use gotoxy(int,int) anywhere i want.
main()
{
      
  system("color B");

    //char = s
    //int = c
    
  printf("welcome to redwood, what is your name?\n%c",arrowright);
  gets(name);
  system("cls");
  printf("oh hello %s ,you are waking up now\n", name);
  printf("    'press z to continue'    ");
  while(input!=27){
  input = getch();
  switch(input){
  case KEY_Z:
       goto wakeup;
       break;}}
       
  wakeup:
         system("cls");
  printf("ugh its already time to wake up...\n");
  system("pause");
 
  

  system("cls");    
printf("|%c|                    \n", player);
printf("|_|                     \n");
printf("bed                     \n");
printf("                    |-| \n");
printf("                    |.| \n");
printf("                    |_| \n");
printf("                    door\n");
printf("      ----              \n");
printf("      |  |              \n");
printf("      ----              \n");
printf("      dressor           \n");
printf("  'press z to continue'   ");
while(input!=27){
                 input = getch();
                 switch(input){
                               case KEY_Z:
                                    goto bedroom;
                                    
                                 break;}}
bedroom:
        system("cls");
if(x==3 && y==0){       
printf("| |%c                    \n", player );
printf("|_|                     \n");
printf("bed                     \n");
printf("                    |-| \n");
printf("                    |.| \n");
printf("                    |_| \n");
printf("                    door\n");
printf("      ----              \n");
printf("      |  |              \n");
printf("      ----              \n");
printf("      dressor           \n");
printf("                        \n");
printf(" use %c   to move around\n", arrowup);
printf("    %c%c%c              \n",arrowleft,arrowdown,arrowright);
printf(" z is the action key \n");
printf("try walking to an object like the dressor and press z");
gotoxy(x,y);
printf("%c",player);}
else{
printf("| |                     \n"),player;
printf("|_|                     \n");
printf("bed                     \n");
printf("                    |-| \n");
printf("                    |.| \n");
printf("                    |_| \n");
printf("                    door\n");
printf("      ----              \n");
printf("      |  |              \n");
printf("      ----              \n");
printf("      dressor           \n");
printf("                        \n");
gotoxy(x,y);printf("%c",player);}
if(x<3){x=3;goto bedroom;}
if(x>19){x=19;goto bedroom;}
if(y>6){y=6;goto bedroom;}
if(y<0){y=0;goto bedroom;}
action:
input=getch();
switch(input){
              
case KEY_RIGHT:
x=x+1;


break;
case KEY_LEFT:
     x=x-1;
   
     
     break;
case KEY_UP:
     y=y-1;
     
     break;
case KEY_DOWN:
     y=y+1;
  
     break;
     case KEY_Z:
  if(x==3 && y==0 || x==3 && y==1){
                             system("cls");
printf("| |    now is not the time to sleep \n");
printf("|_|                     \n");
printf("bed                     \n");
printf("                    |-| \n");
printf("                    |.| \n");
printf("                    |_| \n");
printf("                    door\n");
printf("      ----              \n");
printf("      |  |              \n");
printf("      ----              \n");
printf("      dressor           \n");
printf(" press z to continue              \n");
gotoxy(x,y);printf("%c",player);
getch();
system("cls");
goto bedroom;}
if(x==6 && y==6 || x==7 && y==6 || x==8 && y==6 || x==9 && y==6){
if(cancontinue==0){
                   system("cls");
printf("| |        YOU FOUND A LITTLE POTION! \n");
printf("|_|                     \n");
printf("bed                     \n");
printf("                    |-| \n");
printf("                    |.| \n");
printf("                    |_| \n");
printf("                    door\n");
printf("      ----              \n");
printf("      |  |              \n");
printf("      ----              \n");
printf("      dressor           \n");
littlepotion = littlepotion + 1;
cancontinue = 1;
gotoxy(x,y);printf("%c",player);system("pause>nul"); goto bedroom;}
if(cancontinue==1){
                   system("cls");
printf("| |        you have already looked here \n");
printf("|_|                     \n");
printf("bed                     \n");
printf("                    |-| \n");
printf("                    |.| \n");
printf("                    |_| \n");
printf("                    door\n");
printf("      ----              \n");
printf("      |  |              \n");
printf("      ----              \n");
printf("      dressor           \n");
gotoxy(x,y); printf("%c",player);
system("pause>nul"); goto bedroom;}}
if(x==19 && y==3 || x==19 && y==4 || x==19 && y==5){
         if(cancontinue == 1){
         system("cls");
printf("| |    \n");
printf("|_|                     \n");
printf("bed                     \n");
printf("                    |-| \n");
printf("                    |.| \n");
printf("                    |_| \n");
printf("                    door\n");
printf("      ----              \n");
printf("      |  |              \n");
printf("      ----              \n");
printf("      dressor           \n");
gotoxy(x,y);printf("%c",player);
goto loading;}if(cancontinue == 0){
     system("cls");
     printf("| |    check your dressor first \n");
printf("|_|                     \n");
printf("bed                     \n");
printf("                    |-| \n");
printf("                    |.| \n");
printf("                    |_| \n");
printf("                    door\n");
printf("      ----              \n");
printf("      |  |              \n");
printf("      ----              \n");
printf("      dressor           \n");
gotoxy(x,y);printf("%c",player);system("pause>nul");goto bedroom;}
                            
}

}//this is end of switch statement
                   
          
          
goto bedroom;
     
loading:     
x=0;y=0;system("cls");
while(wait<3){
printf("/");               
Sleep;
system("cls");
printf(" -");
Sleep;
system("cls");
printf("  \\");
Sleep;
system("cls");
printf("\n   |");
Sleep;
system("cls");
printf("\n\n  /");
Sleep;
system("cls");
printf("\n\n _");
Sleep;
system("cls");
printf("\n\n\\");
Sleep;
system("cls");
printf("\n|");
Sleep;
system("cls");
wait=wait+1;}

      
                                            
  return 0;
}
Last edited on
Try using C++.
Try using C++.

It's not an issue with C programming, it's an issue with clear screen. Everytime you clear the screen, it will essentially move the cursor to the top, press space a lot of times, and then move the cursor back to the top. You then tell the computer that after it does all of that really fast, you want it to print out all of your text really fast. This causes the "flicker" that you see.

Work arounds: There really isn't any, but instead of using clear screen, display 25-30 new lines ("\n") to effectively scroll the console up, then display your new stuff. This should also be a little faster and less CPU intensive. Simply, clearing the screen isn't a pretty thing.

Edit: Also, using system is horribly bad practice, do not get used to it. I'll post the link if you actually care, but I, along with just about everyone else on this site, will strongly urge you against it.
Article: http://www.cplusplus.com/forum/articles/11153/

You should not use system to substitute for your lack of knowledge of C++. There is many workarounds for the same exact things you want to do, you just need to learn them.
Last edited on
Topic archived. No new replies allowed.