/*TrisPackage.Tris/draw();*/

void draw()
{
    string formattext="";
    string succsign="{}";
    string failsign="..";
    int ii,kk,ff=0;

    now=DateTime.Now;
    ____draw(0,ref ff, "Time:[" + now.ToString("yyyy-MM-dd HH:mm:ss") + "]");
    for(ii=0; ii<MAPY-1; ii++)
    {
        for(kk=1; kk<MAPX-1; kk++)
        {
            if(tris[ ii,kk] == 1) formattext=formattext+succsign;
            else formattext=formattext+failsign;
        }
        ____draw(0,ref ff,formattext);
    }
    ____draw(0,ref ff,"Score:[" + score.ToString("00000000") + "]");
}
void ____draw(int x,ref int y, string str)
{
    try
    {
        Console.SetCursorPosition(x,y);
        y++;
        Console.Write(str);
    }
    catch(ArgumentOutOfRangeException e)
    {
        Console.WriteLine(e.Message);
    }
}
    
    

/*TrisPackage.Tris/running();*/

public void running()
{
    int rc;

    init();
    while(true)
    {
        keyinfo = Console.ReadKey(true);

        if(keyinfo.Key==ConsoleKey.RightArrow) rc=common_check(D_RIGHT);
        if(keyinfo.Key==ConsoleKey.LeftArrow) rc=common_check(D_LEFT);
        if(keyinfo.Key==ConsoleKey.Enter) rc=direct_check();
        if(keyinfo.Key==ConsoleKey.Escape) break;

        draw();
    }
    stop();
}

 

/*TrisPackage.Tris/check_horizon();*/

int check_horizon()
{
    int ii,kk,ff;

    for(ii=0; ii<MAPY-1; ii++)
    {
        ff=0;
        for(kk=1; kk<MAPX-2; kk++)
        {
            if(tris[ii, kk] != 0)
            {
                if(tris[ii, kk] == tris[ii, kk + 1]) ff++;
                else break;
            }
        }
        if(ff == MAPX-3)
        {
            for(kk=1; kk<MAPX-1; kk++) delete_column(ii,kk);

            score++;
            return(SUCC); 
        }
    }
    //NOT FOUND,Then FAIL!!
    //NOT FOUND,Then FAIL!!
    return(FAIL); 

'c# 언어' 카테고리의 다른 글

TrisPackage.Tris/draw();____draw();  (0) 2021.11.19
TrisPackage.Tris/running();  (0) 2021.11.19
TrisPackage.Tris/delete_column();  (0) 2021.11.19
TrisPackage.Tris/definition/variables/controls  (0) 2021.11.17
TrisPackage.Tris/common_check();  (0) 2021.11.17

/*TrisPackage.Tris/delete_column();*/

void delete_column(int y, int x)
{
    int ii;

    for(ii=y; ii >= 1; ii--)
    {
        tris[ii, x] = tris[ii-1, x];
    }
}

'c# 언어' 카테고리의 다른 글

TrisPackage.Tris/running();  (0) 2021.11.19
TrisPackage.Tris/check_horizon();  (0) 2021.11.19
TrisPackage.Tris/definition/variables/controls  (0) 2021.11.17
TrisPackage.Tris/common_check();  (0) 2021.11.17
TrisPackage.Tris/check_horizon();  (0) 2021.11.17

/*TrisPackage.Tris/definition/variables/controls*/
class TrisCls
{
    //definition
    const int MAPY=22; //final int MAPY=22; //#define MAPY 22
    const int MAPX=31;
    //variables
    int[,] tris = new int[MAPY,MAPX]; //int[][] tris = new int[MAPY][MAPX]; //int tris[MAPY][MAPX];
    //controls
    Timer tm; //class
    Random rr; //class
    ConsoleKeyInfo keyinfo; //structure
    DateTime now; //structure
    //method
    public void running()
    {
        //add code
    }
}

'c# 언어' 카테고리의 다른 글

TrisPackage.Tris/check_horizon();  (0) 2021.11.19
TrisPackage.Tris/delete_column();  (0) 2021.11.19
TrisPackage.Tris/common_check();  (0) 2021.11.17
TrisPackage.Tris/check_horizon();  (0) 2021.11.17
TrisPackage.Tris/tris_time_tick();  (0) 2021.11.17

int common_check(int direction)
{
    int ii,kk,ff;
    int[,] tristmp = new int[MAPY,MAPX];

    for(ii=0; ii<MAPY; ii++)
    for(kk=0; kk<MAPX; kk++)
    {
        tristmp[ii,kk]=tris[ii,kk]; }

    for(ii=0; ii<ARR; ii++)
    for(kk=0; kk<ARR; kk++)
    {
        //Index Array Exception//Index Array Exception//Index Array Exception
        if(ypos+ii >MAPY-1) continue;

        if(xpos+kk > MAX-1) continue;
        if(xpos+kk < 0) continue;

        if(design[ii,kk]==1) tristmp[ypos+ii,xpos+kk]=0; }

    if(direction==D_RIGHT) xpos++;
    if(direction==D_LEFT) xpos--;
    if(direction==D_DOWN) ypos++;

    for(ii=0; ii<ARR; ii++)
    for(kk=0; kk<ARR; kk++)
    {
        //Index Array Exception//Index Array Exception//Index Array Exception

        if(ypos+ii >MAPY-1) continue;
         if(xpos+kk > MAX-1) continue;
         if(xpos+kk < 0) continue;


        if(design[ii,kk]==1) tristmp[ypos+ii,xpos+kk] += 1; }

    ff=0;
    for(ii=0; ii<ARR; ii++)
    for(kk=0; kk<ARR; kk++)
    {
        //Index Array Exception//Index Array Exception//Index Array Exception
        if(ypos+ii >MAPY-1) continue;

        if(xpos+kk > MAX-1) continue;
        if(xpos+kk < 0) continue;

        if(tristmp[ypos+ii,xpos+kk] > 1) ff++;
    }
    if(ff>0)
    {
        if(direction==D_RIGHT) xpos--;
        if(direction==D_LEFT) xpos++;
        if(direction==D_DOWN) ypos--;

        return(FAIL);
    }
    else
    {
        for(ii=0; ii<MAPY; ii++)
        for(kk=0; kk<MAPX; kk++)
        { tris[ii,kk]=tristmp[ii,kk] }
    }
    return(SUCC);
}

Ex)
void tris_time_tick(object sender, ElapsedEventArgs e)
{
    int rc;

    draw();
    rc= common_check(D_DOWN);
    if(rc == FAIL) 
    {
        if(ypos== 0) stop();
        else
        {
            while(true)
            {
                if(check_horizon()==FAIL) break;
            }
            ____init("L");
        }
    }
}

 

'c# 언어' 카테고리의 다른 글

TrisPackage.Tris/delete_column();  (0) 2021.11.19
TrisPackage.Tris/definition/variables/controls  (0) 2021.11.17
TrisPackage.Tris/check_horizon();  (0) 2021.11.17
TrisPackage.Tris/tris_time_tick();  (0) 2021.11.17
TrisPackage.Tris/direct_check();  (0) 2021.11.17

int check_horizon()
{
    int ii,kk,ff;
    for(ii=0; ii<MAPY-1; ii++)
    {
        ff=0;
        for(kk=1; kk<MAPX-2; kk++)
        {
            if(tris[ii,kk] != 0)
            {
                if(tris[ii,kk] == tris[ii,kk+1]) ff++;
                else break;
            }
        }
        if(ff==MAPX-3)
        {
            for(kk=1; kk<MAPX-1; kk++) delete_column(ii,kk);
            score++;
            return(SUCC);
        }
    }
    return(FAIL);
}

'c# 언어' 카테고리의 다른 글

TrisPackage.Tris/definition/variables/controls  (0) 2021.11.17
TrisPackage.Tris/common_check();  (0) 2021.11.17
TrisPackage.Tris/tris_time_tick();  (0) 2021.11.17
TrisPackage.Tris/direct_check();  (0) 2021.11.17
TrisPackage.Tris/common_init();  (0) 2021.11.17

void tris_time_tick(object sender, ElapsedEventArgs e)
{
    int rc;   
    draw();
    rc=common_check(D_DOWN);
    if(rc==FAIL)
    {
        if(ypos==0) stop();
        else
        {
            while(true)
            {
                if(check_horizon()==FAIL) break;
            }
            common_init(FAIL);
        }
    }
}

'c# 언어' 카테고리의 다른 글

TrisPackage.Tris/common_check();  (0) 2021.11.17
TrisPackage.Tris/check_horizon();  (0) 2021.11.17
TrisPackage.Tris/direct_check();  (0) 2021.11.17
TrisPackage.Tris/common_init();  (0) 2021.11.17
time_tick - keyboard hit(Auto)  (0) 2021.11.16

+ Recent posts