Advertisement
AbidBari

Untitled

Nov 15th, 2024
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.43 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. //for anagram
  6.     char ana1[]="listen";
  7.     char ana2[]="earth";
  8.     char ana3[]="binary";
  9.  
  10. //for caesar-cipher
  11.     char ciph1[]="There is a secret code";
  12.     char ciph2[]="Attack at dawn";
  13.     char ciph3[]="Meet me at the park";
  14.  
  15. //for word-guessing
  16.     char word1[]="program";
  17.     char word2[]="network";
  18.     char word3[]="science";
  19.  
  20. int stlen(char str[]);
  21. void stcpy(char str[],char str1[]);
  22. int stcompare(char str1[],char str2[]);
  23.  
  24. int show_menu();
  25.  
  26. void shuffle(char result[], char str[]);
  27.  
  28. void encrypt(char str[],int shift);
  29. void decrypt(char str[],int shift);
  30.  
  31.  
  32.  
  33. int main()
  34. {
  35.     srand(time(NULL));
  36.     int r=rand() % 4;
  37.  
  38.     int x= show_menu();
  39.  
  40.     if(x==2)
  41.     {
  42.         return 0;
  43.     }
  44.  
  45.     //anagram challenge
  46.     {
  47.         printf("Starting Anagram Challenge...\n");
  48.         char chosen[50];
  49.         if(r==1)
  50.         {
  51.             stcpy(chosen,ana1);
  52.         }
  53.         else if(r==2)
  54.         {
  55.             stcpy(chosen,ana2);
  56.         }
  57.         else
  58.         {
  59.             stcpy(chosen,ana3);
  60.         }
  61.  
  62.         char shuffled_word[50];
  63.         shuffle(shuffled_word,chosen);
  64.         printf("Scrambled word: %s\n",shuffled_word);
  65.        
  66.         int anagram_attempt=1;
  67.         while(anagram_attempt<=3)
  68.         {
  69.             char guess[50];
  70.             printf("Your guess: ");
  71.             scanf("%s",guess);
  72.  
  73.             if(stcompare(guess,chosen)==1)
  74.             {
  75.                 printf("Correct! You solved it in %d attempt(s)\n",anagram_attempt);
  76.                 break;
  77.             }
  78.             else
  79.             {
  80.                 printf("Incorrect! ");
  81.                 if(anagram_attempt<3)
  82.                 {
  83.                     printf("Try again.\n");
  84.                 }
  85.                 else
  86.                 {
  87.                     printf("Correct word: %s\n",chosen);
  88.                 }
  89.                 anagram_attempt++;
  90.             }
  91.         }
  92.     }
  93.  
  94.     //caesar-cipher challenge
  95.     {
  96.         int shift=0;
  97.         while(shift==0)
  98.         {
  99.             shift= rand() % 10;
  100.         }
  101.         printf("Starting Caesar Cipher Challenge...\n");
  102.  
  103.         char chosen_phrase[50];
  104.         if(r==1)
  105.         {
  106.             stcpy(chosen_phrase,ciph1);
  107.         }
  108.         else if(r==2)
  109.         {
  110.             stcpy(chosen_phrase,ciph2);
  111.         }
  112.         else
  113.         {
  114.             stcpy(chosen_phrase,ciph3);
  115.         }
  116.  
  117.         char encrypted[200];
  118.         stcpy(encrypted,chosen_phrase);
  119.  
  120.         encrypt(encrypted,shift);
  121.         printf("Encrypted phrase: %s\n",encrypted);
  122.  
  123.         int cipher_attempt=1;
  124.         while(cipher_attempt<=3)
  125.         {
  126.             char guess_phrase[200];
  127.             getchar();
  128.             printf("Your guess: ");
  129.             scanf("%[^\n]",guess_phrase);
  130.  
  131.             if(stcompare(guess_phrase,chosen_phrase)==1)
  132.             {
  133.                 printf("Correct! You decrypted it in %d attempt(s)\n",cipher_attempt);
  134.                 break;
  135.             }
  136.             else
  137.             {
  138.                 printf("Incorrect! ");
  139.                 if(cipher_attempt<3)
  140.                 {
  141.                     printf("Try again.\n");
  142.                 }
  143.                 else
  144.                 {
  145.                     printf("Correct phrase: %s\n",chosen_phrase);
  146.                 }
  147.                 cipher_attempt++;
  148.             }
  149.         }
  150.     }
  151.  
  152.  
  153.  
  154.  
  155. }
  156.  
  157.  
  158. int show_menu()
  159. {
  160.     printf("Welcome to the Game World!\n");
  161.     printf("1. Start Game\n");
  162.     printf("2. Exit\n");
  163.     int choice;
  164.     printf("Enter your choice: ");
  165.     scanf("%d",&choice);
  166.     return choice;
  167. }
  168.  
  169. int stlen(char str[])
  170. {
  171.     int i,size=0;
  172.     for(i=0;str[i];i++)
  173.     {
  174.         size++;
  175.     }
  176.     return size;
  177. }
  178.  
  179. void stcpy(char str[],char str1[])
  180. {
  181.     int i;
  182.     for(i=0;str1[i];i++)
  183.     {
  184.         str[i]=str1[i];
  185.     }
  186.     str[stlen(str1)]='\0';
  187. }
  188.  
  189. //pass two strings so the first is a shuffled version of the second
  190. void shuffle(char result[], char str[])
  191. {
  192.     int n=stlen(str);
  193.    
  194.     stcpy(result,str);
  195.  
  196.     int i,j;
  197.     srand(time(NULL));
  198.     for(i=n-1;i>=0;i--)
  199.     {
  200.         j= rand() % (i+1);
  201.  
  202.         char temp=result[i];
  203.         result[i]=result[j];
  204.         result[j]=temp;
  205.     }
  206. }
  207.  
  208. //returns 0 if the strings dont exactly match
  209. int stcompare(char str1[],char str2[])
  210. {
  211.     if(stlen(str1)!=stlen(str2))
  212.     {
  213.         return 0;
  214.     }
  215.  
  216.     int i;
  217.     for(i=0;str1[i];i++)
  218.     {
  219.         if(str1[i]!=str2[i])
  220.         {
  221.             return 0;
  222.         }
  223.     }
  224.     return 1;
  225. }
  226.  
  227. //shifts each character in str by "shift" forward and wraps around
  228. void encrypt(char str[],int shift)
  229. {
  230.     int i,temp;
  231.     for(i=0;str[i];i++)
  232.     {
  233.         if(str[i]!=' ')
  234.         {
  235.             if(str[i]>='a'&&str[i]<='z')
  236.             {
  237.                 str[i] = ((str[i] - 'a' + shift) % 26) + 'a';
  238.             }
  239.             else if(str[i]>='A' && str[i]<='Z')
  240.             {
  241.                 str[i] = ((str[i] - 'A' + shift) % 26) + 'A';
  242.             }
  243.         }
  244.     }
  245. }
  246.  
  247. void decrypt(char str[],int shift)
  248. {
  249.     int i,temp;
  250.     for(i=0;str[i];i++)
  251.     {
  252.         if(str[i]!=' ')
  253.         {
  254.             if(str[i]>='a'&&str[i]<='z')
  255.             {
  256.                 str[i] = ((str[i] - 'a' - shift) % 26) + 'a';
  257.             }
  258.             else if(str[i]>='A' && str[i]<='Z')
  259.             {
  260.                 str[i] = ((str[i] - 'A' - shift) % 26) + 'A';
  261.             }
  262.         }
  263.     }
  264. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement