Snadjoh se nekako... :) I vec se na ekranu sija crveni "Hello world" pixel! :)
Sto se tice tvog problema:
1. Tenk na pocetku neka uvek bude na sredini nekog pocetnog tilea
2. Napravi promenljivu
int velocity[2] ( za trenutnu x i y brzinu ) i
int oldVel[2] koje pamti prethodnu brzinu. Kada pritisnes:
- na gore: velocity[0] = 0; velocity[1] = 2; ( ako je pozitivno y 'na dole' onda stavis - 2)
- na dole ( suprotno od gornjeg)
- na levo velocity[0] = -2; velocity[1] = 0;
- na desno velocity[0] = 2; velocity[1] = 0;
- treba nam i bool promenljiva slobodnoKreatanje koja je na pocetku false
3. Update
Code:
{
BOOL dugmePritisnuto = FALSE;
if(!bSlobodnoKretanje)
{
velocity[0] = velocity[1] = 0; // na pocetku je nula
if( DUGME_PRITISNUTO )
{
velocity se menja u zavisnosti koje dugme je pritisnuto
dugmePritisnuto = TRUE;
}
}
PomeriTenk();
if(!dugmePritisnuto && ( oldVelocity != 0 ) ) // tenk je ostavljen na milost i nemilost grida :)
ProveriPozicioniranost()
oldVelocity = velocity;
}
Pomeranje tenka je simply pos = pos + velocity;
4. Sada proveravamo koje sve tileove preseca tenk ( IntersectRect() ce pomoci :) ). Posto on moze presecati i tile koji je iza njega, moze se desiti da se tenk vrati na prethodni tile, sto nama ne treba, vec bi trebao da nastavi ka 'prednjem' tile-u na koji nailazi. I zato nam treba oldVelocity da zapamtimo u kojem pravcu je isao..
Code:
ProveriPozicioniranost()
{
// pomocu intersectRect nadjemo sve tileove koje presecamo ( najvise ce to biti dva )
//od ta dva izaberemo onaj koji nam je u pravcu oldVel kretanja i proverimo da li smo u njegovom centru ( ako jesmo bSlobodnoKretanje je FALSE
// i ovde se slobodno kretanje zaustavlja )
// ako nismo
// postavljamo velocity na old velocity
}
Uoci da, kada je tenk u stanju slobodnog kretanja, igracnije u mogucnosti da ga pokrene sve dok se ne smesti.
Ovo nije testirano ali, nadam se da ce pomoci :)