Ejemplo n.º 1
0
static void startEditMode(void* valuePtr, int16_t loLimit, int16_t hiLimit, uint8_t valueType)
{
	editMode = ON;
	keys = KEY_INIT;
	editValuePtr = valuePtr;
	editValueType = valueType;
	
	if (valueType == TYPE_UINT8)
		editValue = *(uint8_t*)valuePtr;
	else if (valueType == TYPE_INT8)
		editValue = *(int8_t*)valuePtr;
// 	else if (valueType == TYPE_INT16)
// 		editValue = *(int16_t*)valuePtr;
	
	editLoLimit = loLimit;
	editHiLimit = hiLimit;
	editInitialValue = editValue;
	
	lcdFillRectangle(30, 11, 98, 34, 0);
	lcdRectangle(30, 11, 98, 34, 1);
	lcdRectangle(31, 12, 97, 33, 1);
	writeSoftkeys(_skEDIT);
	lcdSelectFont(&font12x16);
	editModeHandler();
}
Ejemplo n.º 2
0
uint8_t react(uint8_t inputControl) {
    Element *iter = head, copy = *head;
    uint8_t result;
	//Inicjucje redraw calego ekranu
    /*
	lcdRectangle(a.xb, a.yb, a.xe, a.ye, 1, LCDBlack);
	a.xb = (a.xb+4)%240;
	a.xe = (a.xe+4)%240;
	lcdRectangle(a.xb, a.yb, a.xe, a.ye, 1, LCDWhite);
    */
    //presuwamy koniec weza
    result = checkCollision(inputControl);
	if(eatable == NULL)
		newEatable();
    if(result == 1 || result == 2) {
			if(result == 1) {
        while(iter->next != NULL)
            iter = iter->next;
        lcdRectangle(iter->x, iter->y, iter->x+ELSIZE-1, iter->y+ELSIZE-1, 1, bgCOLOR);
        while(iter->prev != head) {
            iter->x = iter->prev->x;
            iter->y = iter->prev->y;
            iter = iter->prev;
        }
        iter->x = copy.x;
        iter->y = copy.y;
        //rysuje nowa glowe
        lcdRectangle(head->x, head->y, head->x+ELSIZE-1, head->y+ELSIZE-1, 1, fgCOLOR);
			}
        oldControl = inputControl;
        switch(oldControl) {
            case 1:
                forbidden = 4;
                break;
            case 2:
                forbidden = 8;
                break;
            case 4:
                forbidden = 1;
                break;
            case 8:
                forbidden = 2;
                break;
        }
		return 1;
    }
    else
        return 0;
}
Ejemplo n.º 3
0
void initSnake() {
    Element *iter;
    head = factory();
    if(head != NULL) {
        head->x = 7*16;
        head->y = 10*16;
        head->prev = NULL;
        head->next = factory();
        if(head->next != NULL) {
            head->next->x = head->x + ELSIZE;
            head->next->y = head->y;
            head->next->prev = head;
            head->next->next = factory();
            if(head->next->next != NULL) {
                head->next->next->x = head->x + ELSIZE*2;
                head->next->next->y = head->y;
                head->next->next->prev = head->next;
                head->next->next->next = NULL;
            }
        }
    }
    else {
        //Jakas wiadomosc na lcd?
    }

    for(iter = head; iter != NULL; iter = iter->next)
        lcdRectangle(iter->x, iter->y, iter->x+ELSIZE-1, iter->y+ELSIZE-1, 1, fgCOLOR);

    newEatable();
}
Ejemplo n.º 4
0
//generujemy nowy jadalny element, element jest poprawny jesli jego next
//ma wartosc 0xEA, w trakcie sprawdzania jesli next ma wartox 0xEE
void newEatable() {
    while(eatable == NULL || eatable->next != (Element*)0xEA) {
        if(eatable == NULL)
            eatable = factory();
        eatable->x = (random()%15)*16;//rand()%240;
        eatable->y = (random()%20)*16;//rand()%320;
        eatable->next = (Element*)0xEE;
        eatable->prev = NULL;
        if(checkCollision(0) == 1)
            eatable->next = (Element*)0xEA;
    }
    lcdRectangle(eatable->x, eatable->y, eatable->x+ELSIZE-1, eatable->y+ELSIZE-1, 1, fgCOLOR);
}