#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <dos.h>
#include <conio.h>
#include<graphics.h>
#include<windows.h>
#define loai 100 // che do dos (console la 100)

int thoiGianCho[] = {5*loai, 4*loai, 2*loai, 1*loai, loai/2};
int dk = 50;
int load = 50;
int tc = 100;
int dm = 18;

int max_row = 20, min_row = 5;
int max_col = 60, min_col = 2;

int i, x1, y1, xm, ym, d, muc, diem, banDo, a, b;
int x[50];
int y[10];
void ktdh()
{
initwindow(700,600,"ran");
}
void gotoxy(int x,int y)
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE) ;
COORD position = {x,y} ;
SetConsoleCursorPosition(hStdout,position ) ;
}

void start()
{

d = 3;
srand(time(NULL));
if (diem == 0){
do{
gotoxy(10, 10);
printf("Moi ban chon muc choi tu 1 den 5: ");
scanf("%d", &muc);
}while(muc < 1 || muc > 5);
/*
do{
gotoxy(16, 17);
printf("Moi ban chon ban do choi tu 1 den 5: ");
scanf("%d", &banDo);
}while(banDo <1 || banDo >5);
*/

}
getchar();

gotoxy(15,10);printf("muc choi cua ban la %d\n", muc);
gotoxy(15,11);printf("Ban hay dung cac phim A,S,D,W de dieu khien ran di an moi\n");
gotoxy(15,12);printf("Bam phim p de dung lai, Q de thoat\n");
gotoxy(15,13);printf("An Enter de bat dau choi !");

getchar();

x[0] = (min_col+max_col)/2;
y[0] = (min_row + max_row)/2;
x1 =-1; y1 =0;
xm = rand()%(max_col - min_col - 1) + min_col + 1;
ym = rand()%(max_row - min_row - 1) + min_row + 1;


gotoxy(20,10); for(i=0; i< 30; i++) printf("%c", 95);
gotoxy(20,11); for(i=0; i< 29; i++) printf("%c", 95); printf("%c",177);
gotoxy(20,11); for(i=0; i< 30; i++){
printf("%c",177);
delay(load);
}


i=1;
}

void thua(){
char tiep;
gotoxy(20, 22); printf("Rat tiec, ban da thua...\n");
gotoxy(20, 23); printf("Diem cua ban la %d\n", diem);
gotoxy(20, 24); printf("Ban muon choi tiep? [y/n]");
scanf("%c", &tiep);
if (tiep == 'y'){
diem = 0;
start();
}else{
exit(0);
}
}

void thang(){

muc = muc % 5 + 1;
//banDo = banDo % 5 + 1;
if (diem >= (dm-3)*5){
gotoxy(10, 3); printf("Chuc mung ban da pha dao!");
getchar();
}
gotoxy(63, 16); printf("diem: %d", diem);
gotoxy(20, 22); printf("Chuc mung ban da thang\n");
gotoxy(20, 23); printf("Diem cua ban la %d\n", diem);
gotoxy(20, 24); printf("Nhan enter de choi muc tiep theo...");
getchar();
start();
}

void giaoDien(){
gotoxy(63, 2); printf("nguyenvanquan7826");
gotoxy(63, 8); printf("A: sang trai");
gotoxy(63, 9); printf("D: sang phai");
gotoxy(63, 10); printf("W: len tren");
gotoxy(63, 11); printf("S: xuong duoi");
gotoxy(63, 12); printf("Q: thoat");
gotoxy(63, 13); printf("P: tam dung");
gotoxy(63, 14); printf("Enter: tiep tuc");

gotoxy(63, 16); printf("diem: %d", diem);
gotoxy(63, 17); printf("muc: %d", muc);
//gotoxy(63, 18); printf("ban do: %d", banDo);
for (i=min_col; i<=max_col; i++){
gotoxy(i, min_row); printf("%c", 177);
gotoxy(i, max_row); printf("%c", 177);
}

for (i=min_row; i<=max_row; i++){
gotoxy(min_col, i); printf("%c", 177);
gotoxy(max_col, i); printf("%c", 177);
}
}

int main()
{
ktdh();
srand(time(NULL));
int ketThuc = 0;
int key = 0;
diem = 0;

gotoxy(30, 10); printf("RAN SAN MOI");
getchar();
start();

while(!ketThuc){
do{
giaoDien();
gotoxy(xm, ym); printf("$");
gotoxy(x[0], y[0]); printf("*");
gotoxy(x[d-1], y[d-1]); printf(" ");
for (int i = d; i >0; i--){
x[i] = x[i-1];
y[i] = y[i-1];
}
x[0] = x[0] + x1;
y[0] = y[0] + y1;
gotoxy(x[0], y[0]); printf("%c",2);
gotoxy(xm, ym);
if (x[0] == xm && y[0] == ym){
diem++;
d++;
xm = rand()%(max_col-min_col - 1) + min_col + 1;
ym = rand()%(max_row-min_row - 1) + min_row + 1;
}
for(int i=1; i<d; i++){
if (x[0] == min_col || y[0] == min_row || x[0] == max_col || y[0] == max_row || (x[0] == x[i] && y[0] == y[i])){
i = d;
thua();
}
}
if (d == dm) {
thang();
}
delay(thoiGianCho[muc]);
} while(!kbhit());
key = getch();
if (key == 'a' && x1 != 1) {
x1 = -1; y1 = 0;
}
if (key == 's' && y1 != -1){
x1 = 0; y1 = 1;
}
if (key == 'd' && x1 != -1){
x1 =1; y1 = 0;
}
if (key == 'w' && y1 != 1){
x1 = 0; y1 = -1;
}
if (key == 'p'){
getch();
}
if (key == 'q'){
ketThuc = 1;
}
}
return 0;
}