Ejemplo n.º 1
0
void init(void) {	//Alustus
		cli(); //Estetään keskeytykset

        DDRE  |=  (1 << PE4) | (1 << PE5);	//kaiutin pinnit ulostuloksi
        PORTE &= ~(1 << PE4);				// pinni PE4 nollataan
        PORTE |=  (1 << PE5);  				// pinni PE5 asetetaan
        	
		TCCR3A &= ~( (1 << WGM31) | (1 << WGM30) ); // ajastin nollautuu, kun sen ja OCR3A rekisterin arvot ovat samat
        TCCR3B |=    (1 << WGM32);
        TCCR3B &=   ~(1 << WGM33);

		ETIMSK |= (1 << OCIE3A);

        OCR3AH = 0x00;	// asetetaan OCR1A rekisterin arvoksi 0x22
        OCR3AL = 0x22;
		
		TCCR3B |= (1 << CS32) | (1 << CS30);

			
		DDRA &= ~(1 << PA0); // näppäin pinnit sisääntuloksi
		DDRA &= ~(1 << PA2);
		DDRA &= ~(1 << PA4);

		DDRA |= (1 << PA6);	// led pinni ulostuloksi

		lcd_init();		//LCD-näytön alustaminen
		lcd_write_ctrl(LCD_ON);
		lcd_write_ctrl(LCD_CLEAR);
}
Ejemplo n.º 2
0
int annaseed() {
	lcd_write_ctrl(LCD_CLEAR);
	lcd_write_str("***Battleship***", 0);
	lcd_write_str("****************",1);
	int nappiylos = 0;
	int nappipohjassa = 0;
	int seed = 0;

	while(!(nappipohjassa && nappiylos)) {
	
		if(ButtonCenter){		
			nappipohjassa = 1;
			seed = seed +6;
		} 
	
		else {
			if(nappipohjassa == 1){
				nappiylos = 1;
				seed = seed + 4;
			}

		}
		seed++;
		if (seed > 542)
			seed = 0;

	}
	lcd_write_ctrl(LCD_CLEAR);
	_delay_ms(250); // Aikaa reagoida pelin alkamiseen
	return seed;
}
Ejemplo n.º 3
0
void lcd_gotoxy (int x, int y) {
    
       if ( y==0 )
          lcd_write_ctrl(LCD_DDRAM | (0x00+x));
       else
          lcd_write_ctrl(LCD_DDRAM | (0x40+x));
	
}
Ejemplo n.º 4
0
void init_settings(void){
	//Add costum characters
	for(int i=0;i<24;i++)
	{
		lcd_write_ctrl(LCD_CGRAM+i);
		lcd_write_data(__csettings[i]);
	}

	lcd_write_ctrl(LCD_CLEAR);
	lcd_write_data(2);
	lcd_write_data('E');
	lcd_write_data('n');
	lcd_write_data('a');
	lcd_write_data('b');
	lcd_write_data('l');
	lcd_write_data('e');
	lcd_write_data('/');
	lcd_write_data('D');
	lcd_write_data('i');
	lcd_write_data('s');
	lcd_write_data('a');
	lcd_write_data('b');
	lcd_write_data('l');
	lcd_write_data('e');
	lcd_gotoxy(0,1);
	lcd_write_data('A');
	lcd_write_data('c');
	lcd_write_data('c');
	lcd_write_data('e');
	lcd_write_data('l');
	lcd_write_data('e');
	lcd_write_data('r');
	lcd_write_data('a');
	lcd_write_data('t');
	lcd_write_data('i');
	lcd_write_data('o');
	lcd_write_data('n');

	lcd_gotoxy(15,1);
	if(acceleration == 1)
	{
		lcd_write_data(1);
	}
	else
	{
		lcd_write_data(0);
	}

}
Ejemplo n.º 5
0
void init_menu(void) {
	//Start randomizer for obstacles
	start_timer_for_randomizer();
	//Add right arrow character
	for(int i=0;i<8;i++)
	{
		lcd_write_ctrl(LCD_CGRAM+i);
		lcd_write_data(__cmenu[i]);
	}

	refresh_menu();

	lcd_gotoxy(0,0);
	lcd_write_data(0);

	start = 1;

}
Ejemplo n.º 6
0
void refresh_menu()
{
	lcd_write_ctrl(LCD_CLEAR);

	lcd_gotoxy(1,0);
	
	lcd_write_data('S');
	lcd_write_data('T');
	lcd_write_data('A');
	lcd_write_data('R');
	lcd_write_data('T');

	lcd_gotoxy(8,0);
	lcd_write_data('S');
	lcd_write_data('E');
	lcd_write_data('T');
	lcd_write_data('T');
	lcd_write_data('I');
	lcd_write_data('N');
	lcd_write_data('G');
	lcd_write_data('S');

	lcd_gotoxy(3,1);
	lcd_write_data('H');
	lcd_write_data('I');
	lcd_write_data('G');
	lcd_write_data('H');
	lcd_write_data(' ');
	lcd_write_data('S');
	lcd_write_data('C');
	lcd_write_data('O');
	lcd_write_data('R');
	lcd_write_data('E');
	lcd_write_data('S');

}
Ejemplo n.º 7
0
int main(void)  {
/*Valikot*/
	init();
	int vaikeus = 25;	// Oletus = helppo
	char merkki = 0b00111110;
	int seed = annaseed();
	char y = 0;		// valikko muuttujia
	char z = 0;
	
	while (1) {		
		y = 0;
		z = 0;
		
		lcd_write_ctrl(LCD_CLEAR);
		lcd_write_str("  Pelaa nyt", 0);					//Main menu
		lcd_write_str("  Vaikeustaso", 1);
		while (1) {
			lcd_gotoxy(0,y);
			lcd_write_data(' ');
			if (ButtonDown && y < 1)
				y++;
			
			if (ButtonUp && y > 0)
				y--;
		
			if (ButtonCenter) {
				while (ButtonCenter)	// ei poistuta funktiosta nappipohjassa
					_delay_ms(50);
					
				break;
			}
		
			lcd_gotoxy(0,y);
			lcd_write_data(merkki);
			_delay_ms(50);
		}
	
		while (y == 0)  {						// Aloita peli
			switch (pelifunktio(vaikeus, seed)) {
				case 0: 								// Voitto
					lcd_write_ctrl(LCD_CLEAR);
					lcd_write_str("*****VOITTO*****", 0);
					while (ButtonCenter)				 // Odotetaan että nappi päästetään irti
						_delay_ms(50);				

					nyancat();
					break;
				case 1: 								// Häviö
					lcd_write_ctrl(LCD_CLEAR);
					lcd_write_str("*****HAVIO*****", 0);
					havio();
					_delay_ms(500);
 
					while (!(ButtonCenter))	// Voitossa tätä ei tarvita koska nyan huolehtii napin päästön
						_delay_ms(50);
					while (ButtonCenter)
						_delay_ms(50);
					break;
				case 2:
					continue;
				}
			
			lcd_write_ctrl(LCD_CLEAR);
			lcd_write_str("  Uusi peli", 0);
			lcd_write_str("  Valikkoon", 1);
			while (1) {
				lcd_gotoxy(0, z);
				lcd_write_data(' ');
				if (ButtonDown && z < 1)
					z++;
			
				if (ButtonUp && z > 0)
					z--;
		
				if (ButtonCenter) {
					while (ButtonCenter)
						_delay_ms(50);
					
					break;
				}
		
				lcd_gotoxy(0,z);
				lcd_write_data(merkki);			
				_delay_ms(50);
			}
			if (z == 0) {
				y = 0;
				seed++;
			}
			
			else
				y = 5;	//hypätään seuraavien ehtojen yli
		}
		
		if (y == 1) {
			vaikeus = 0;
			lcd_write_ctrl(LCD_CLEAR);
			lcd_write_str("  Helppo (25)", 0);
			lcd_write_str("  Vaikea (10)", 1);
	
			while (1) {
				lcd_gotoxy(0, vaikeus);
				lcd_write_data(' ');
				if (ButtonDown && vaikeus < 1)
					vaikeus++;
			
				if (ButtonUp && vaikeus > 0)
					vaikeus--;
		
				if (ButtonCenter) {
					while (ButtonCenter)
						_delay_ms(50);
					
					break;
				}
				lcd_gotoxy(0,vaikeus);
				lcd_write_data(merkki);			
				_delay_ms(50);
			}
			
			if (vaikeus == 0)
				vaikeus = 25;
			else					// Jos lisätään tasoja muuta ifiksi
				vaikeus = 10;
			
		}
	}
}
Ejemplo n.º 8
0
void piirtofunktio(int (*kentta)[10], int vasenyk, int x, int y, int ammusmaara) {	
/* Ei muokkaa mitään, piirtää pelikentän */
    lcd_write_ctrl(LCD_CLEAR); //piirretään varmmaan n.10x sekunnissa TAI ainakun käyttäjä painaa nappia
    char avaamatonruutu = '^';
	char tyhjaruutu = '.';
	char taysiruutu = '*';

    lcd_gotoxy(0,0);
    
    for(int i = 0; i<10; i++) {
  
        switch(kentta[i][vasenyk]) {
            case 1:
            case 0:
                lcd_write_data(avaamatonruutu);
            break;
            case 2:
                lcd_write_data(tyhjaruutu);
            break;
            case 3:
                lcd_write_data(taysiruutu);
            break;
        
        }        
    }
    //yksinkertaisuuden takia en käytä sisäkkäistä silmukkaa kahdella kierroksella
    lcd_write_data(' ');
    lcd_write_data(' ');
    lcd_write_data('A');
    lcd_write_data('=');
 	 
	//http://stackoverflow.com/questions/1114741/how-to-convert-int-to-char-c
	if(ammusmaara > 9)
		lcd_write_data((char)(((int)'0')+(ammusmaara / 10)));
	
	else 
        lcd_write_data(' ');

	lcd_write_data((char)(((int)'0')+(ammusmaara % 10)));

    //kaikki 16 käytetty
    //alemman rivin piirto

	lcd_gotoxy(0,1);
    for(int i = 0; i<10; i++) {
  
        switch(kentta[i][vasenyk+1]) {
            case 1:
            case 0:
                lcd_write_data(avaamatonruutu);
            break;
            case 2:
                lcd_write_data(tyhjaruutu);
            break;
            case 3:
                lcd_write_data(taysiruutu);
            break;
        
        }
		
        
        
    }
	
	lcd_write_data(' ');
	lcd_write_data(' ');
    lcd_write_data('L');
    lcd_write_data('=');

	if(y > 8) { 			//Rivin korkeus, pelaajalle näytetään rivi + 1
        lcd_write_data('1');
        y = y - 10;
    }
	else {
       lcd_write_data(' ');
	}

	lcd_write_data((char)(((int)'0')+(y+1)));
}