JOC SNAKE

Mi-am propus sa realizez un joc de tipul Snake, comandat printr-o tastatura PS2. Pentru reprezentarea grafica a jocului voi folosi un afisaj LCD de Nokia 3310.

Descriere generala

Va fi un singur jucator. Schema bloc este urmatoarea :

Pentru interactiunea cu jucatorul uman voi folosi sagetile de la o tastatura PS2. Calculatorul va genera pozitii random pentru bilele pe care va trebui sa le manance snake-ul, iar la fiecare noua bila mancata, snake-ul va creste in lungime. Jocul se va incheia atunci cand snake-ul se va lovi fie de peretii inconjuratori fie de el insusi, si ii va fi calculat un scor bazat pe lungimea sa.

Hardware design

Pentru realizarea hardware a acestui proiect, sunt necesare, pe langa placa de baza, urmatoarele componente:

- LCD de Nokia 3310

- 5 rezistente 3k3

- 5 rezistente 1k8

Software design

Limbaj de programare : C

Mediu dezvoltare : Notepad++

Compilator : AVR-GCC

Pentru lucrul cu display-ul LCD de Nokia 3310 am folosit functiile din primul laborator de PM :

/************************************************************************ 
 * DEFINE-uri pentru parametrizarea modulului LCD
 ************************************************************************/
#define LcdDATA_DDR		DDRA			// Portul pe care conectam firele de date la LCD-ul
#define LcdDATA_PORT		PORTA
#define LcdDATA_PIN		PINA
 
#define LcdCMD_DDR		DDRA	        // Portul pe care conectam firele de comenzi la LCD
#define LcdCMD_PORT		PORTA
#define LcdCMD_PIN		PINA
 
#define LcdD4			 PA0		// Pin-ul pentru firul de date D4 de pe LCD
#define LcdD5			 PA1		// Pin-ul pentru firul de date D5 de pe LCD
#define LcdD6			 PA2		// Pin-ul pentru firul de date D6 de pe LCD
#define LcdD7			 PA3		// Pin-ul pentru firul de date D7 de pe LCD
 
#define LcdRS			 PA4	        // Pinul pentru selectare operatie (LCD)
#define LcdRW			 PA5		// Pinul pentru Read/ Write (LCD)
#define LcdE			 PA6		// Pinul de Enable (LCD)
 
#define LCD_INSTR_4wire 		0x28 	// 4 fire date, font 5x8
#define LCD_INSTR_display 		0x0C 	// Display On, Cursor On, Blinking On ( 1 Display Cursor Blink )
#define LCD_INSTR_clearDisplay  	0x01 	// Clear Display
#define LCD_INSTR_returnHome		0x02 	// Return Cursor and LCD to Home Position
#define LCD_INSTR_nextLine 		0xC0 	// Return Cursor and LCD to Home Position
#define LCD_INSTR_gotoCGRAM		0x40	// go to Character Generator RAM
 
/*************
 * API LCD   *
 *************/
void LCD_init();                                        // Initializare modul LCD.Trebuie apelata inainte de a se face orice operatie cu LCD-ul
void LCD_writeInstruction(unsigned char _instruction);	// Trimite o instructiune catre lcd (vezi datasheet)
void LCD_writeData(unsigned char _data);		// Trimite date catre LCD pentru afisare
void LCD_write(unsigned char _byte);			// trimite un bute catre LCD la modul general (nu conteaza daca e instructiune sau date)
void LCD_waitNotBusy();					// Asteptam pana cand lcd-ul devine disponibil pt o noua comanda
void LCD_waitInstructions(unsigned char _instructions);	// Asteapta un numar de cicli de ceas.
void LCD_print(char* _msg);				// Afiseaza imformatia pe LCD (doar 1 linie, primele 16 caractere)
void LCD_print2(char* _msg1, char* _msg2);		// Afisare pe 2 lini pe LCD
void LCD_printDecimal2u(unsigned int _n);		// Afisare numar in baza 10 pe LCD
void LCD_printHexa(unsigned int _n);			// Afisare numar in baza 16 pe LCD

Rezultate Obtinute

In constructie.

Concluzii

Din pacate, lipsa timpului nu mi-a permis sa finalizez proiectul.

Bibliografie/Resurse

pm/prj2010/mcarjaliu/snakeps2.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0