Advertisement
kknndd_

Untitled

Jun 15th, 2021
532
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.18 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <string.h>
  5. #include <ctype.h>
  6. #include <stdbool.h>
  7.  
  8. #define buttonPin1 6
  9. #define buttonPin2 5
  10. #define buttonPin3 4
  11. #define buttonPin4 3
  12.  
  13. void setup(){
  14.    
  15.     for(byte i = 6; i < 14; i++){
  16.         pinMode(i, OUTPUT);
  17.     }
  18.    
  19.     for(byte i = 2; i < 6; i++){
  20.         pinMode(i, INPUT);
  21.     }
  22.  
  23.     Serial.begin(9600);
  24.  
  25. }
  26.  
  27. char* generate(int len, bool repeat){
  28.  
  29.  
  30.     if (repeat && len > 9){
  31.         return NULL;
  32.     }
  33.  
  34.     char* code = (char*)malloc(len * sizeof(char));
  35.  
  36.     randomSeed(analogRead(A4));
  37.  
  38.     if (repeat){
  39.  
  40.         strcpy(code[0], random(0,9) + '0');
  41.         strcpy(code[1], random(0,9) + '0');
  42.         strcpy(code[2], random(0,9) + '0');
  43.         strcpy(code[3], random(0,9) + '0');
  44.  
  45.         Serial.print("CODE : ");
  46.         Serial.println(code);
  47.  
  48.     } else {
  49.         // todo
  50.     }
  51.  
  52.     return code;
  53.  
  54. }
  55.  
  56. void get_score( char* secret, char* guess, int* peg_a, int* peg_b ){
  57.  
  58.     int a = 0;
  59.  
  60.     for(int i = 0; i < strlen(secret); i++){
  61.  
  62.         if(secret[i] == guess[i]){
  63.             a++;
  64.         }
  65.  
  66.     }
  67.  
  68.     int b = 0;
  69.  
  70.     for (int i = 0; i < strlen(secret); i++){
  71.         if(secret[i] != guess[i]){
  72.             for(int j = 0; j < strlen(secret); j++){
  73.                 if (secret[i] == guess[j]){
  74.                     b++;
  75.                 }
  76.             }
  77.         }
  78.     }
  79.  
  80.     *peg_a = a;
  81.     *peg_b = b;
  82.  
  83. }
  84.  
  85. void turn_off_leds(){
  86.   digitalWrite(6, LOW);
  87.   digitalWrite(7, LOW);
  88.   digitalWrite(8, LOW);  
  89.   digitalWrite(9, LOW);
  90.   digitalWrite(10, LOW);
  91.   digitalWrite(11, LOW);
  92.   digitalWrite(12, LOW);
  93.   digitalWrite(13, LOW);
  94. }
  95.  
  96. void render_led(int peg_a, int peg_b){
  97.  
  98.    digitalWrite(6, LOW);
  99.    digitalWrite(7, LOW);
  100.    digitalWrite(8, LOW);  
  101.    digitalWrite(9, LOW);
  102.    digitalWrite(10, LOW);
  103.    digitalWrite(11, LOW);
  104.    digitalWrite(12, LOW);
  105.    digitalWrite(13, LOW);
  106.  
  107.     for(int i = 0; i < peg_b; i+=2){
  108.       digitalWrite(i+6, HIGH);
  109.    }
  110.    
  111.    for(int i = 0; i < peg_a; i+=2){
  112.       digitalWrite(i+7, HIGH);
  113.    }
  114.  
  115. }
  116.  
  117. void play_game(char* secret){
  118.  
  119.     for(int pokus = 0; pokus < 10; pokus++) {
  120.  
  121.         int enter_value = 0;
  122.         int number_1 = 0;
  123.         int number_2 = 0;
  124.         int number_3 = 0;
  125.         int number_4 = 0;
  126.  
  127.         while( enter_value < 1010 ){
  128.  
  129.             if( digitalRead(buttonPin1) == HIGH ){
  130.                
  131.                 number_1++;
  132.  
  133.             }
  134.  
  135.             if( digitalRead(buttonPin2) == HIGH ){
  136.                
  137.                 number_2++;
  138.  
  139.             }
  140.  
  141.             if( digitalRead(buttonPin3) == HIGH ){
  142.                
  143.                 number_3++;
  144.  
  145.             }
  146.  
  147.             if( digitalRead(buttonPin4) == HIGH ){
  148.                
  149.                 number_4++;
  150.  
  151.             }
  152.  
  153.             if (number_1 > 9){
  154.                 number_1 = 0;
  155.             }
  156.            
  157.             if (number_2 > 9){
  158.                 number_2 = 0;
  159.             }
  160.  
  161.             if (number_3 > 9){
  162.                 number_3 = 0;
  163.             }
  164.            
  165.             if (number_4 > 9){
  166.                 number_4 = 0;
  167.             }
  168.  
  169.             enter_value = analogRead(A0);
  170.             Serial.print("USER CODE : ");
  171.             Serial.print(number_1);
  172.             Serial.print(number_2);
  173.             Serial.print(number_3);
  174.             Serial.print(number_4);
  175.             Serial.println("");
  176.             delay(100);
  177.  
  178.            
  179.             while(
  180.                 digitalRead(buttonPin1) == HIGH ||
  181.                 digitalRead(buttonPin2) == HIGH ||
  182.                 digitalRead(buttonPin3) == HIGH ||
  183.                 digitalRead(buttonPin4) == HIGH
  184.             ){
  185.                 delay(50);
  186.             }
  187.  
  188.         }
  189.  
  190.         int a=0, b=0;
  191.  
  192.         char guess[4];
  193.        
  194.         guess[0] = number_1 + '0';
  195.         guess[1] = number_2 + '0';
  196.         guess[2] = number_3 + '0';
  197.         guess[3] = number_4 + '0';
  198.  
  199.         get_score(secret, "", a, b);
  200.         render_led(a,b);
  201.  
  202.     }
  203.  
  204. }
  205.  
  206. void loop() {
  207.  
  208.     char* secret = generate(4, true);
  209.  
  210.     Serial.print("SECRET : ");
  211.     Serial.println(secret);
  212.    
  213.     play_game(secret);
  214.     free(secret);
  215.  
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement