Having looked at the program, I've come to the same conclusion as Fredrik.
I also note that used hard-coded values for keyCodes.
Also, you only need to call srand once per program execution. I've removed all calls to it from functions that are repeatedly called, instead placing it as the first call inside main.
I suggest the following code works and gives an output that resembles the game 'snake'.
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <ctime> // to use the time function
#include <cstdlib>
#include <cstdio>
#include <iostream>
using namespace std;
class moving
{
private :
short x;
short y;
int value;
public :
moving (short xa ,short ya,int va);
void gotoxy(short x, short y);
void gotoxy(short x, short y,bool clear);
void shiftright(short x, short y,int value);
short get_x() ;
short get_y() ;
int get_value();
void set_x(short newx );
void set_y(short newy);
void set_value(int newvalue);
int generate_number();
void generate_random_number();
};
moving ::moving(short xa ,short ya,int va)
{
x = xa ;
y = ya ;
value =va ;
}
void moving::gotoxy(short x , short y) {
COORD pos = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void moving ::gotoxy(short x ,short y,bool clear) {
COORD pos = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
cout<<" ";
}
void moving::shiftright(short x ,short y ,int value ) {
gotoxy(x,y);
cout<<value;
}
short moving ::get_x()
{
return x ;
}
short moving ::get_y()
{
return y ;
}
int moving ::get_value()
{
return value ;
}
void moving ::set_x(short newx)
{
x=newx;
}
void moving ::set_y(short newy)
{
y=newy ;
}
void moving ::set_value(int newvalue)
{
value=newvalue ;
}
int moving::generate_number() {
int value= rand() % 10;
return value;
}
void moving ::generate_random_number() {
x= rand() % 50;
y= rand() % 50;
gotoxy(x,y);
int rand_num=generate_number();
cout<<rand_num;
}
const int leftKey = 75;
const int rightKey = 77;
const int upKey = 72;
const int downKey = 80;
int main ()
{
srand(time(NULL));
moving m1(0,0,0);
moving m2 (0,0,'*');
m1.shiftright(m1.get_x(), m1.get_y(), m1.get_value());
m2.shiftright(m2.get_x(), m2.get_y(), m2.get_value());
m2.generate_random_number();
printf("m1: %d,%d,%c\n", m1.get_x(), m1.get_y(), m1.get_value());
printf("m2: %d,%d,%c\n", m2.get_x(), m2.get_y(), m2.get_value());
getch();
unsigned char a;
while(1)
{
a=getch();
switch(a)
{
case downKey:
m1.gotoxy(m1.get_x(),m1.get_y(),m1.get_value());
m1.set_y(m1.get_y() + 1);
if(m1.get_y()>50)
m1.set_y(50);
m1.shiftright(m1.get_x(),m1.get_y(),m1.get_value());
break;
case upKey:
m1.gotoxy(m1.get_x(),m1.get_y(),m1.get_value());
m1.set_y(m1.get_y()-1);
if(m1.get_y()<0)
m1.set_y(0);
m1.shiftright(m1.get_x(),m1.get_y(),m1.get_value());
break;
case leftKey:
m1.gotoxy(m1.get_x(),m1.get_y(),m1.get_value());
m1.set_x(m1.get_x()-1);
if(m1.get_x()<0)
m1.set_x(0);
m1.shiftright(m1.get_x(),m1.get_y(),m1.get_value());
break;
case rightKey:
m1.gotoxy(m1.get_x(),m1.get_y(),m1.get_value());
m1.set_x(m1.get_x()+1);
if(m1.get_x()>50)
m1.set_x(50);
m1.shiftright(m1.get_x(),m1.get_y(),m1.get_value());
break;
case 'e':
break;
}
if(m1.get_x()==m2.get_x() && m1.get_y()==m2.get_y())
{
m2.generate_random_number();
}
}
}