http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=2506 [º¹»ç]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#define FILENAME "dic.txt" //´Ü¾îÀåÀÇ À̸§À» Á¤ÀÇ
#define LINE 300 //´Ü¾îÀÇ °¹¼ö¸¦ Á¤ÀÇ
int randnum();
void input_word(char word[]);
char dicload();
void wordquiz();
void flashcard();
void hangword(char word[]);
void hangman();
int dicadd();
int dicsave();
void dic();
static int linecount=0; //´Ü¾îÀÇ °¹¼ö¸¦ Á¤Àûº¯¼ö·Î ¼±¾ðÇÏ¿© º¯µ¿½Ã ±×´ë·Î À¯ÁöµÇµµ·Ï ÇÏ¿´´Ù
static char diceng[LINE][16], dickor[LINE][61]; //¿µ¾î ´Ü¾î¿Í ÇÑ±Û ´Ü¾î¸¦ ÀúÀåÇÏ´Â ¹è¿·Î¼, ¹è¿ÀÌ ÇÁ·Î±×·¥ ½ÇÇà³»³» À¯ÁöµÇµµ·Ï Á¤Àûº¯¼ö·Î ¼±¾ðÇÏ¿´´Ù.
int main()
{
system("clear");
dicload();
int sel; //Ç׸ñ ÁöÁ¤ÇÏ´Â ¼ýÀÚ
printf(">> ¿µ¾î ´Ü¾î ¾Ï±â ÇÁ·Î±×·¥ <<\n");
printf("1. ¿µ¾î ´Ü¾î ¸ÂÃß±â 2. Ç÷¡½¬Ä«µå\n");
printf("3. Çà¸Ç (hangman) 4. ´Ü¾îÀå °ü¸®\n");
printf("5. ÇÁ·Î±×·¥ Á¾·á\n\n");
printf("¹øÈ£¸¦ ¼±ÅÃÇϼ¼¿ä : ");
scanf("%d", &sel);
system("clear");
if (sel==1)
wordquiz();
if (sel==2)
flashcard();
if (sel==3)
hangman();
if (sel==4)
dic();
if (sel==5)
system("exit");
}
int randnum() //·£´ýº¯¼ö¸¦ ÃëÇÑ ´Ü¾î°¡ ¾ø´Â ÁÙ¿¡ ÀÖ¾î¼ Ç¥½Ã°¡ ¾Æ¹«°Íµµ ¾ÈµÉ °æ¿ì¸¦ ´ëºñÇÏ¿© ±× °æ¿ì¿¡ °è¼Ó ·£´ýº¯¼ö¸¦ ÃëÇÏ°Ô ÇØÁÜ
{
srand(time(NULL));
int i;
while (1)
{
i=rand()%(LINE+1);
if (('a' <= diceng[i][0]) && (diceng[i][0] <= 'z'))
break;
}
return i;
}
void input_word(char word[]) //Á¤»óÀû ´Ü¾î ÀÔ·ÂÀ» À§ÇÑ ´Ü¾îÀÔ·ÂÇÔ¼ö
{
int i=0, c;
while (1)
{
c=getchar();
if ((c==' ') || (i==16))
{
while ((c=getchar()) != '\n')
;
printf("°ø¶õ ¾øÀÌ ´Ü¾î¸¦ ´Ù½Ã ÀÔ·ÂÇØÁÖ¼¼¿ä : ");
i = 0;
continue;
}
if (c == '\n' || (c == EOF))
{
word[i++] = '\0';
break;
}
word[i++] = c;
}
}
char dicload() //»çÀüÀ» ·ÎµåÇÏ´Â ÇÔ¼ö
{
FILE *dict;
int i=0;
dict = fopen(FILENAME, "r");
while (fscanf(dict, "%s %s", diceng[i], dickor[i]) !=EOF)
{
i++;
linecount++;
}
fclose(dict);
}
void wordquiz() //¿µ¾î ´Ü¾î ¸ÂÃß±â ÇÔ¼ö
{
printf(">> ¿µ¾î ´Ü¾î ¾Ï±â ÇÁ·Î±×·¥ : ´Ü¾î ÄûÁî <<\n");
srand(time(NULL));
int j=0, k=0; //¸Â´Â °Í°ú Àüü ¹®Á¦ ¼ö¸¦ Ä«¿îÆ®ÇÏ´Â º¯¼ö
char answer[16], quit[] = ".quit", ent; //ent´Â ¿£ÅÍÀԷ½à Ãʱâ¸Þ´º·Î
getchar();
while (1)
{
int i = randnum();
printf("%s -> ", dickor[i]);
input_word(answer);
if (strcmp(answer, diceng[i])==0)
{
printf("correct!\n");
j++;
k++;
}
if ((strcmp(answer, diceng[i])!=0) && (strcmp(answer, quit)!=0))
{
printf("incorrect!\n");
k++;
}
if (strcmp(answer, quit)==0)
break;
}
if (k!=0) //ÇÑ ¹®Á¦ ÀÌ»ó Ç®¾úÀ» °æ¿ì Á¡¼ö Ãâ·Â
{
printf("´ç½ÅÀÇ Á¡¼ö´Â %.2fÁ¡ÀÔ´Ï´Ù. (EnterÀԷ½à Ãʱâ¸Þ´º·Î...) ", (j*100.0/k));
}
else //¹®Á¦¸¦ ÀüÇô Ç®Áö ¾Ê¾ÒÀ»°æ¿ì 0À¸·Î ³ª´²Áö´Â ¿À·ù ´ëºñ
system("main_structure");
scanf("%c", &ent);
if (ent == '\n')
{
system("clear");
main(); //ÇÁ·Î±×·¥ ¸ÞÀθ޴º·Î µ¹¾Æ°¡±â
}
}
void flashcard() //Ç÷¡½¬Ä«µå ÇÔ¼ö
{
printf(">> ¿µ¾î ´Ü¾î ¾Ï±â ÇÁ·Î±×·¥ : Ç÷¡½¬ Ä«µå <<\n");
int a, t, w, i;
srand(time(NULL));
printf("´Ü¾î¸¦ Ãâ·ÂÇÏ´Â ½Ã°£ °£°ÝÀ» ÀÔ·ÂÇØÁÖ¼¼¿ä(ÃÊ) : ");
scanf("%d", &t);
printf("Ãâ·ÂÇÏ°í ½ÍÀº ´Ü¾îÀÇ °³¼ö¸¦ ÀÔ·ÂÇØÁÖ¼¼¿ä : ");
scanf("%d", &w);
for(i=0;i<w;i++)
{
a = randnum();
printf("-> %s\n", diceng[a]);
sleep(t);
printf("-> %s\n", dickor[a]);
sleep(t);
}
main();
}
void hangword(char word[]) //Çà¸Ç ´Ü¾î¸¦ ____ÀÌ·± Çü½ÄÀ¸·Î ¹Ù²ãÁÖ´Â ÇÔ¼ö
{
int i;
for(i=0;i<=15;i++)
{
if (word[i]=='\0')
break;
word[i]='_';
}
}
void hangman()//Çà¸Ç
{
srand(time(NULL));
char hint[31], word[16], answer, ent;
int ran=randnum(), anscount=1, tr=1, count, i, j=0, hang=1;//ran=·£´ý´Ü¾î, anscount=Çà¸ÇÀ̹ÌÁöº¯È Ä«¿îÆ®, count=Àüü Ä«¿îÆ®, i,j=º»¹®¾È¿¡ ¿©·¯¹æµµ·Î »ç¿ëµÊ
strcpy(word, diceng[ran]);
strcpy(hint, dickor[ran]);
hangword(word);
for(count=1;count<=16;count++)
{
printf(">> ¿µ¾î ´Ü¾î ¾Ï±â ÇÁ·Î±×·¥ : Çó¸Ç <<\n\n");
printf("(ÈùÆ®) %s\n\n", hint);
switch(hang){
case 1:{
printf("-------------------------+\n");
printf(" \n");
printf(" \n");
printf(" \n\n");
for(i=0;i<=15;i++)
{
printf("%c ", word[i]);
if (word[i]=='\0')
break;
}
printf("¸ÞÀÎÀ¸·Î µ¹¾Æ°¡½Ã·Á¸é *À» ÀÔ·ÂÇØÁÖ¼¼¿ä^^\n");
printf("%d ¹ø° ½Ãµµ : ", tr);
}break;
case 2:{
printf("-------------------------+\n");
printf(" O\n");
printf(" \n");
printf(" \n\n");
for(i=0;i<=15;i++)
{
printf("%c ", word[i]);
if (word[i]=='\0')
break;
}
printf("¸ÞÀÎÀ¸·Î µ¹¾Æ°¡½Ã·Á¸é *À» ÀÔ·ÂÇØÁÖ¼¼¿ä^^\n");
printf("%d ¹ø° ½Ãµµ : ", tr);
}break;
case 3:{
printf("-------------------------+\n");
printf(" O\n");
printf(" l\n");
printf(" \n\n");
for(i=0;i<=15;i++)
{
printf("%c ", word[i]);
if (word[i]=='\0')
break;
}
printf("¸ÞÀÎÀ¸·Î µ¹¾Æ°¡½Ã·Á¸é *À» ÀÔ·ÂÇØÁÖ¼¼¿ä^^\n");
printf("%d ¹ø° ½Ãµµ : ", tr);
}break;
case 4:{
printf("-------------------------+\n");
printf(" O\n");
printf(" /l\n");
printf(" \n\n");
for(i=0;i<=15;i++)
{
printf("%c ", word[i]);
if (word[i]=='\0')
break;
}
printf("¸ÞÀÎÀ¸·Î µ¹¾Æ°¡½Ã·Á¸é *À» ÀÔ·ÂÇØÁÖ¼¼¿ä^^\n");
printf("%d ¹ø° ½Ãµµ : ", tr);
}break;
case 5:{
printf("-------------------------+\n");
printf(" O\n");
printf(" /l\\ \n");
printf(" \n\n");
for(i=0;i<=15;i++)
{
printf("%c ", word[i]);
if (word[i]=='\0')
break;
}
printf("¸ÞÀÎÀ¸·Î µ¹¾Æ°¡½Ã·Á¸é *À» ÀÔ·ÂÇØÁÖ¼¼¿ä^^\n");
printf("%d ¹ø° ½Ãµµ : ", tr);
}break;
case 6:{
printf("-------------------------+\n");
printf(" O\n");
printf(" /l\\ \n");
printf(" / \n\n");
for(i=0;i<=15;i++)
{
printf("%c ", word[i]);
if (word[i]=='\0')
break;
}
printf("¸ÞÀÎÀ¸·Î µ¹¾Æ°¡½Ã·Á¸é *À» ÀÔ·ÂÇØÁÖ¼¼¿ä^^\n");
printf("%d ¹ø° ½Ãµµ : ", tr);
}break;
case 7:{
printf("-------------------------+\n");
printf(" O\n");
printf(" /l\\ \n");
printf(" / \\ \n\n");
for(i=0;i<=15;i++)
{
printf("%c ", word[i]);
if (word[i]=='\0')
break;
}
printf("¸ÞÀÎÀ¸·Î µ¹¾Æ°¡½Ã·Á¸é *À» ÀÔ·ÂÇØÁÖ¼¼¿ä^^\n");
printf("%d ¹ø° ½Ãµµ : ", tr);
}break;
}
getchar();
tr++;
scanf("%c", &answer);
if (answer=='*')
break;
else
{
j=0;
for(i=0;i<=14;i++) //ÀÔ·ÂÇÑ ¹®ÀÚ¿Í Á¤´äÀÇ ¹®ÀÚ¿À» ºñ±³ÇÔ
{
if (answer == diceng[ran][i])
{
word[i] = diceng[ran][i];
j++;
}
}
if (j==0) //Çó¸Ç À̹ÌÁö¿Í n¹ø° ½Ãµµ Ƚ¼ö¸¦ Áõ°¡½ÃÄÑÁÜ
{
anscount++;
hang++;
}
}
if (hang>=7) //Çó¸Ç ¸¶Áö¸· ±×¸²±îÁö °¬À» ¶§ ±× ±×¸²À» À¯Áö½ÃÄÑÁÜ
hang=7;
if (strcmp(diceng[ran], word) == 0)
{
if (anscount<7) //ÃàÇϸ޽ÃÁö Ãâ·Â
{
printf("##########################\n");
printf("### Congratulations!!! ###\n");
printf("##########################\n");
break;
}
else //Ƚ¼ö°¡ ¸¹À»°æ¿ì ¸ÂÃè´Ù´Â ¸Þ½ÃÁö Ãâ·Â
{
printf("Ƚ¼ö°¡ °æ°úÇÏ¿´Áö¸¸ Á¤´äÀ» ¸ÂÃ߼̽À´Ï´Ù~\n");
}
break;
}
system("clear");
}
getchar();
printf("EnterÅ°¸¦ ´©¸£¸é ¸ÞÀθ޴º·Î µ¹¾Æ°©´Ï´Ù : \n");
scanf("%c", &ent);
if (ent=='\n')
{
system("clear");
main();
}
}
void dic()
{
int sel;
char ent; //´Ü¾îÀå °ü¸® ¸Þ´º·Î ´Ù½Ã µ¹¾Æ¿À´Â ¿£ÅÍÅ°
printf(">> ¿µ¾î ´Ü¾î ¾Ï±â ÇÁ·Î±×·¥ : ´Ü¾îÀå °ü¸® <<\n");
printf("1. ´Ü¾îÀå Àоî¿À±â 2. ´Ü¾î Ãß°¡Çϱâ\n");
printf("3. ´Ü¾îÀå ÀúÀåÇϱâ 4. ´Ü¾îÀå º¸±â\n");
printf("5. ´Ü¾îÀå °ü¸® Á¾·á\n\n¹øÈ£¸¦ ÀÔ·ÂÇϼ¼¿ä : ");
scanf("%d", &sel);
switch (sel){
case 1:
{
dicload();
printf("´Ü¾îÀåÀ» Àоî¿Ô½À´Ï´Ù.\n");
system("clear");
dic();
}
break;
case 2:
dicadd();
break;
case 3:
dicsave();
break;
case 4:
{
printf("----------´Ü¾îÀå--------------\n");
system("cat dic");
printf("\nEnterÅ°¸¦ ´©¸£¸é ´Ü¾îÀå ¸Þ´º·Î µ¹¾Æ°©´Ï´Ù\n");
getchar();
scanf("%c", &ent);
if (ent == '\n')
{
system("clear");
dic();
}
}
break;
case 5:
main();
break;
}
}
int dicadd()
{
printf(".add ÀԷ½ÿ¡ ÀúÀåÈÄ ´Ü¾îÀå ¸Þ´º·Î µ¹¾Æ°©´Ï´Ù.\n");
while (1)
{
printf("¿µ¾î ´Ü¾î : ");
scanf("%s", diceng[linecount]);
if (strcmp(diceng[linecount], ".add") == 0)
break;
printf("ÇÑ±Û ¶æ : ");
scanf("%s", dickor[linecount]);
linecount++;
}
system("clear");
dic();
}
int dicsave()
{
int i, j;
char temp[41], ent;
FILE *dict;
dict = fopen(FILENAME, "w+");
for(i=0; i<linecount; i++){
for(j=0; j<linecount ; j++){
if(strcmp(diceng[i],diceng[j]) <= 0){
strcpy(temp,diceng[i]);
strcpy(diceng[i],diceng[j]);
strcpy(diceng[j],temp);
strcpy(temp,dickor[i]);
strcpy(dickor[i],dickor[j]);
strcpy(dickor[j],temp);
}
}
}
for(i=0;i<linecount;i++)
fprintf(dict, "%s %s\n", diceng[i], dickor[i]);
fclose(dict);
printf("´Ü¾îÀåÀ» ÀúÀåÇß½À´Ï´Ù.\n");
printf("EnterÅ°¸¦ ´©¸£¸é ´Ü¾îÀå °ü¸®¸Þ´º·Î µ¹¾Æ°©´Ï´Ù\n");
scanf("%c", &ent);
if (ent=='\n')
dic();
}
¸ÕÀú, dicload()ÇÔ¼ö¸¦ ½ÇÇàÇÏ¿© ´Ü¾îÀå dicÀ» ¹è¿¿¡ ÀúÀåÇÕ´Ï´Ù. dic()ÇÔ¼ö°¡ ´Ü¾î°ü¸®¸¦ ÇÏ°Ô ¸¸µé¾îÁÖ´Â ¸Þ´ºÀ̱¸¿ä. dicadd¸¦ ½ÇÇàÇϸé Ãß°¡ÇÒ ´Ü¾î¸¦ ÇϳªÇϳª ÀÔ·ÂÇؼ ¹è¿¿¡ ÀúÀåÇÕ´Ï´Ù. ±×¸®°í dicsave¸¦ ½ÇÇàÇϸé ÀúÀåµÈ ¹è¿ÀÇ ´Ü¾îµéÀ» ¹öºí¼ÒÆ®¸¦ ÀÌ¿ëÇؼ Á¤·ÄÇÑ ÈÄ¿¡ ÅؽºÆ®ÆÄÀÏ dic¿¡ fprintf¸¦ ÀÌ¿ëÇÏ¿© ÀÔ·ÂÇÏ°Ô ¸¸µé¾ú´Âµ¥¿ä.... ÇغÁµµ ±×´ë·Î³×¿ä.. ¾î¶»°Ô ÇؾߵÇÁÒ? ¤Ð |
Hit : 6478 Date : 2010/06/18 10:23
|