Advertisement
milanmetal

[RSDMK ]Arcade ZAPOCEO

Jun 2nd, 2018
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.76 KB | None | 0 0
  1. #include <c8051f340.h>        
  2. #include "time.h"
  3. #include <stdlib.h>
  4. #include "TFT.h"
  5. #include "joy.h"
  6.  
  7. void OSCILLATOR_Init (void);          
  8. void PORT_Init (void);
  9. #define OBST_NUM 3
  10. #define KORAK 5
  11.  
  12. typedef struct obstacles {
  13.     char x1;
  14.     char y1;
  15.         char visible;
  16.     char length;
  17. } PREPREKE;
  18.  
  19. void generisi_prepreke(PREPREKE *prepreke){
  20.     int i = 0;
  21.  
  22.     for(i = 0; i < OBST_NUM; i++) {
  23.         (prepreke+i)->x1 = rand() % 100;
  24.         (prepreke+i)->y1 = 0;
  25.         (prepreke+i)->length = 3*KORAK + (rand() % 5) * KORAK;
  26.     }
  27. }
  28.  
  29. void pomjeri_prepreke(PREPREKE *prepreke, int korak) {
  30.     int i = 0;
  31.  
  32.     for(i = 0; i < OBST_NUM; i++) {
  33.         //(prepreke+i)->x1 = rand() % 100;
  34.        
  35.         (prepreke+i)->y1 += korak;
  36.         (prepreke+i)->length = 10 + rand() % 20;
  37.     }
  38. }
  39.  
  40. void main(void)
  41. {
  42.     int joyX, joyY, prevX, prevY;
  43.     bit fire, prevFire;
  44.  
  45.     PREPREKE prepreke[OBST_NUM];
  46.  
  47.     PCA0MD &= ~0x40;    // Watchdog tajmer iskljucen
  48.  
  49.     OSCILLATOR_Init();  // Inicijalizacija oscilatora (Fosc = 22.1184 MHz)
  50.     TIME_Init();        // Inicijalizacija sistemskog vremena (koristi se prekid tajmera 2)
  51.     PORT_Init();        // Inicijalizacija portova
  52.     TFT_Init();         // Inicijalizacija displeja
  53.     JOY_Init();         // Inicijalizacija dzojstika
  54.  
  55.     TFT_clrScr();
  56.     //target();
  57.  
  58.     generisi_prepreke(&prepreke);
  59.  
  60.     //test aplikacija:
  61.     while (1)
  62.     {
  63.         //citanje X pozicije
  64.         prevX = joyX;
  65.         joyX = JOY_ReadX();
  66.        
  67.         //citanje Y pozicije
  68.         prevY = joyY;
  69.         joyY = JOY_ReadY();
  70.        
  71.         //citanje stanja tastera
  72.         prevFire = fire;
  73.         fire = JOY_ReadTrigger();
  74.  
  75.         TFT_setColor(255, 0, 0);
  76.         TFT_drawLine(prepreke[0].x1, prepreke[0].y1, prepreke[0].x1, prepreke[0].y1 + prepreke[0].length);
  77.         TFT_drawLine(prepreke[1].x1, prepreke[1].y1, prepreke[1].x1, prepreke[1].y1 + prepreke[1].length);
  78.         TFT_drawLine(prepreke[2].x1, prepreke[2].y1, prepreke[2].x1, prepreke[2].y1 + prepreke[2].length);
  79.  
  80.         //move_obstacles();
  81.  
  82.         if (prevX != joyX || prevY != joyY || fire != prevFire) //doslo je do promene?
  83.         {
  84.             /*TFT_setColor(0, 0, 0);                        //crno
  85.             TFT_fillCircle(prevX, prevY, 4);    //izbrisi krug sa trenutne pozicije
  86.            
  87.             if (fire)
  88.                 TFT_setColor(255, 255, 0);          //zuto
  89.             else
  90.                 TFT_setColor(255, 0, 0);                //crveno
  91.            
  92.             TFT_fillCircle(joyX, joyY, 4);      //nacrtaj krug na novoj poziciji
  93.            
  94.             target();                                                   //ponovo nacrtaj metu
  95.            
  96.             if (fire)
  97.             TFT_setColor(255, 255, 0);              //zuto
  98.             else
  99.                 TFT_setColor(255, 0, 0);                //crveno
  100.             TFT_fillCircle(joyX, joyY, 4);      //nacrtaj krug na novoj poziciji */
  101.         }
  102.     }                            
  103.  }
  104.  
  105. void PORT_Init (void)
  106. {
  107.    P2MDIN |= 0x0F;              // 4 najniza bita porta P2 -> digitalni
  108.    P2MDOUT = 0x0C;              // Pinovi za LED -> push-pull izlazi
  109.  
  110.    // Crossbar inicijalizacija
  111.    XBR1    = 0x40;              // Dozvola crossbar-a i slabih pull-up otpornika
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement