'Major Related/C/C++'에 해당되는 글 1건


###c

#define BLACK 0
#define BLUE 1
#define GREEN 2
#define CYAN 3
#define RED 4
#define MAGENTA 5
#define BROWN 6
#define LIGHTGRAY 7
#define DARKGRAY 8
#define LIGHTBLUE 9
#define LIGHTGREEN 10
#define LIGHTCYAN 11
#define LIGHTRED 12
#define LIGHTMAGENTA 13
#define YELLOW 14
#define WHITE 15 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <assert.h>
#include <memory.h>
#include <Windows.h>

void gene_sort(void *, int, size_t, int (*)(void *, void *));
int integerCompare(void *, void *);
int doubleCompare(void *, void *);
int stringCompare(void *, void *);
void gotoxy(int x, int y);
void textcolor(int foreground, int background);

int main()
{
    char pointWord[5][80]={0,};    //saving point words
    char word[80]={0,};            //saving previous words
    char inputed_word[80]={0,};    //temporary save
    
    char stack[20][80];            //save history to check repetition, word stack
    int stack_cnt=0;            //stack push count

    int pos_x=20, pos_y=6;
    int word_x=1, word_y=2;
    int p_pos_x=1, p_pos_y=10;
    int score_pos_x=40, score_pos_y=15;
    int score=0;
    
    int len=0;
    
    int i=0;

    FILE *Pw; //pointword file pointer

    Pw=fopen("c:\\data\\pointWord.txt", "rt");    //open pointword file

    assert(Pw!=NULL);    //is it exist?

    while(!feof(Pw))
    {
        fgets(pointWord[i],sizeof(pointWord),Pw);
        pointWord[i][strlen(pointWord[i])-1]='\0';    //delete \n character

        i++;
    }

    fclose(Pw);    //close opened file pointer

    gene_sort(pointWord,sizeof(pointWord)/sizeof(pointWord[0]), sizeof(pointWord[0]), stringCompare);    //sorting point word

    strcpy(word,"포인터정");    //starts with "pointer jung"

    system("cls");

    printf("[끝말잇기 게임]\n");
    printf("%s -> ", word);

    gotoxy(p_pos_x, p_pos_y);
    printf("*Point word*\n");
    for(i=0;i<5;i++)
    {
        printf("%d. %s\n",i+1, pointWord[i]);    //printing pointword
    }

    while(1)
    {
        gotoxy(pos_x, pos_y);
        printf("단어 입력 :                     \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");

        gets(inputed_word);    //word to match

        for(i=0;i<stack_cnt;i++)
        {
            if(strcmp(stack[i],inputed_word)==0)    //matching with saved strings
            {
                while(1)
                {
                    gotoxy(pos_x, pos_y);
                    printf("Wrong!!                    ");
                    getch();
                    gotoxy(pos_x, pos_y);
                    printf("단어 입력 :                     \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
                    gets(inputed_word);
                    i=0;
                    break;
                }
            }

        }

        strcpy(stack[stack_cnt],inputed_word);    //save to stack
        stack_cnt++;

        if(stack_cnt==20)    //20th try
        {
            system("cls");
            printf("You Lose!!!\n");
            getch();
            exit(0);
        }

        len=strlen(word);
        if(word[len-2]==inputed_word[0]&&word[len-1]==inputed_word[1])
        {    
            if(word_x>=70)
            {
                word_x=1;    
                word_y++;
            }
            else
            {
                word_x+=(strlen(word)+4);
            }
            gotoxy(word_x+1,word_y);
            printf("%s -> ",inputed_word);

            strcpy(word,inputed_word);
            strcpy(inputed_word,"\0");

            for(i=0;i<5;i++)
            {
                if(strcmp(word,pointWord[i])==0)
                {
                    score+=20;
                    gotoxy(p_pos_x, p_pos_y+i+1);
                    textcolor(RED, BLACK);
                    printf("%d. %s\n",i+1,pointWord[i]);
                    //change color!
                    textcolor(LIGHTGRAY,BLACK);

                    gotoxy(score_pos_x,score_pos_y);
                    printf("점수 : %d", score);
                    if(score==100)
                    {
                        printf("You Win!!\n");
                        getch();
                        exit(0);
                    }
                }
            }

        }
        else
        {
            printf("잘못된 입력!");
            Sleep(500);
            printf("\r                      ");
        }
    }

    printf("%s->",word);

    
}


void gene_sort(void *p, int count, size_t size, int (*dataCompare)(void *, void *))
{
    int i, j;
    void *tmp;
    tmp=malloc(size);

    for(i=0;i<count-1;i++)
    {
        for(j=i+1;j<count;j++)
        {
            if(dataCompare((char*)p+i*size, (char *)p+j*size)>0)
            {
                memcpy(tmp, (char *)p+i*size, size);
                memcpy((char *)p+i*size, (char *)p+j*size, size);
                memcpy((char *)p+j*size, tmp, size);
            }
        }
    }

    free(tmp);
}

int integerCompare(void *p1, void *p2)
{
    if(*(int *)p1>*(int *)p2) {return 1;}
    else if( *(int *)p1 == *(int *)p2) {return 0;}
    else {return -1;}
}

int doubleCompare(void *p1, void *p2)
{
    if(*(double *)p1>*(double *)p2) {return 1;}
    else if( *(double *)p1 == *(double *)p2) {return 0;}
    else {return -1;}
}

int stringCompare(void *p1, void *p2)
{
    if(strcmp((char *)p1, (char *)p2)>0)    {return 1;}
    else if(strcmp((char *)p1, (char *)p2)==0) {return 0;}
    else {return -1;}
}

void gotoxy(int x, int y)
{
    COORD Pos = {x - 1, y - 1};
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);


void textcolor(int foreground, int background)
{
    int color=foreground+background*16;
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);






#define BLACK 0
#define BLUE 1
#define GREEN 2
#define CYAN 3
#define RED 4
#define MAGENTA 5
#define BROWN 6
#define LIGHTGRAY 7
#define DARKGRAY 8
#define LIGHTBLUE 9
#define LIGHTGREEN 10
#define LIGHTCYAN 11
#define LIGHTRED 12
#define LIGHTMAGENTA 13
#define YELLOW 14
#define WHITE 15

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <assert.h>
#include <memory.h>
#include <Windows.h>

void gene_sort(void *, int, size_t, int (*)(void *, void *));
int integerCompare(void *, void *);
int doubleCompare(void *, void *);
int stringCompare(void *, void *);
void gotoxy(int x, int y);
void textcolor(int foreground, int background);

int main()
{
    char pointWord[5][80]={0,};    //saving point words
    char word[80]={0,};            //saving previous words
    char inputed_word[80]={0,};    //temporary save
   
    char stack[20][80];            //save history to check repetition, word stack
    int stack_cnt=0;            //stack push count

    int pos_x=20, pos_y=6;
    int word_x=1, word_y=2;
    int p_pos_x=1, p_pos_y=10;
    int score_pos_x=40, score_pos_y=15;
    int score=0;
   
    int len=0;
   
    int i=0;

    FILE *Pw; //pointword file pointer

    Pw=fopen("c:\\data\\pointWord.txt", "rt");    //open pointword file

    assert(Pw!=NULL);    //is it exist?

    while(!feof(Pw))
    {
        fgets(pointWord[i],sizeof(pointWord),Pw);
        pointWord[i][strlen(pointWord[i])-1]='\0';    //delete \n character

        i++;
    }

    fclose(Pw);    //close opened file pointer

    gene_sort(pointWord,sizeof(pointWord)/sizeof(pointWord[0]), sizeof(pointWord[0]), stringCompare);    //sorting point word

    strcpy(word,"포인터정");    //starts with "pointer jung"

    system("cls");

    printf("[끝말잇기 게임]\n");
    printf("%s -> ", word);

    gotoxy(p_pos_x, p_pos_y);
    printf("*Point word*\n");
    for(i=0;i<5;i++)
    {
        printf("%d. %s\n",i+1, pointWord[i]);    //printing pointword
    }

    while(1)
    {
        gotoxy(pos_x, pos_y);
        printf("단어 입력 :                     \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");

        gets(inputed_word);    //word to match

        for(i=0;i<stack_cnt;i++)
        {
            if(strcmp(stack[i],inputed_word)==0)    //matching with saved strings
            {
                while(1)
                {
                    gotoxy(pos_x, pos_y);
                    printf("Wrong!!                    ");
                    getch();
                    gotoxy(pos_x, pos_y);
                    printf("단어 입력 :                     \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
                    gets(inputed_word);
                    i=0;
                    break;
                }
            }

        }

        strcpy(stack[stack_cnt],inputed_word);    //save to stack
        stack_cnt++;

        if(stack_cnt==20)    //20th try
        {
            system("cls");
            printf("You Lose!!!\n");
            getch();
            exit(0);
        }

        len=strlen(word);
        if(word[len-2]==inputed_word[0]&&word[len-1]==inputed_word[1])
        {   
            if(word_x>=70)
            {
                word_x=1;   
                word_y++;
            }
            else
            {
                word_x+=(strlen(word)+4);
            }
            gotoxy(word_x+1,word_y);
            printf("%s -> ",inputed_word);

            strcpy(word,inputed_word);
            strcpy(inputed_word,"\0");

            for(i=0;i<5;i++)
            {
                if(strcmp(word,pointWord[i])==0)
                {
                    score+=20;
                    gotoxy(p_pos_x, p_pos_y+i+1);
                    textcolor(RED, BLACK);
                    printf("%d. %s\n",i+1,pointWord[i]);
                    //change color!
                    textcolor(LIGHTGRAY,BLACK);

                    gotoxy(score_pos_x,score_pos_y);
                    printf("점수 : %d", score);
                    if(score==100)
                    {
                        printf("You Win!!\n");
                        getch();
                        exit(0);
                    }
                }
            }

        }
        else
        {
            printf("잘못된 입력!");
            Sleep(500);
            printf("\r                      ");
        }
    }

    printf("%s->",word);

   
}


void gene_sort(void *p, int count, size_t size, int (*dataCompare)(void *, void *))
{
    int i, j;
    void *tmp;
    tmp=malloc(size);

    for(i=0;i<count-1;i++)
    {
        for(j=i+1;j<count;j++)
        {
            if(dataCompare((char*)p+i*size, (char *)p+j*size)>0)
            {
                memcpy(tmp, (char *)p+i*size, size);
                memcpy((char *)p+i*size, (char *)p+j*size, size);
                memcpy((char *)p+j*size, tmp, size);
            }
        }
    }

    free(tmp);
}

int integerCompare(void *p1, void *p2)
{
    if(*(int *)p1>*(int *)p2) {return 1;}
    else if( *(int *)p1 == *(int *)p2) {return 0;}
    else {return -1;}
}

int doubleCompare(void *p1, void *p2)
{
    if(*(double *)p1>*(double *)p2) {return 1;}
    else if( *(double *)p1 == *(double *)p2) {return 0;}
    else {return -1;}
}

int stringCompare(void *p1, void *p2)
{
    if(strcmp((char *)p1, (char *)p2)>0)    {return 1;}
    else if(strcmp((char *)p1, (char *)p2)==0) {return 0;}
    else {return -1;}
}

void gotoxy(int x, int y)
{
    COORD Pos = {x - 1, y - 1};
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}

void textcolor(int foreground, int background)
{
    int color=foreground+background*16;
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
}




허접의 극치

블로그 이미지

아삐꼬까

,