Avatar billede abh Nybegynder
23. februar 2007 - 01:49 Der er 4 kommentarer og
1 løsning

lille logik problem

Hej er i gang med at skrive et simpelt "line drawing" program til GBA
jeg har et lille problem med at gemme x og y værdierne:

Jeg synes at jeg har prøvet allt men intet virker

///////////////////////////////////////////////////////
if(KEY_A_PRESSED){  //Plot Pixels
      if((line_x1==0)&&(line_y1==0)){
          line_x1 = x;
          line_y1 = y;
      }
      if((line_x1!=0)&&(line_y1!=0)){
            if((line_x2==0)&&(line_y2==0)){ //<<<<<<<<<< DAMN!!!
                line_x2 = x;
                line_y2 = y;
            }
        }
}
///////////////////////////////////////////////

dette er bare en af de forskellige metoder jeg har prøvet
problemet er at line_x1 and line_y1 bliver gemt no problem, men så er det med x2 og y2 at jeg ikke kan få.
Hvis jeg fjerner

if((line_x2==0)&&(line_y2==0))

fungerer det fint undtagen at jeg kan sætte værdien for xy2 flere gange hvilket jeg ikke ønsker.
de er alle "initialized" til 0 så jeg kan slet ikke se problemet
måske har jeg bare gloet på det for længe

håber nogen kan løse det her

på forhånd tak
ABH
Avatar billede abh Nybegynder
24. februar 2007 - 22:44 #1
ingen forslag??
Avatar billede abh Nybegynder
24. februar 2007 - 23:05 #2
...
Avatar billede faerch Nybegynder
27. februar 2007 - 07:35 #3
Hejsa.
Jeg sendte faktisk et forslag igår, men den er ikke kommet med kan jeg se.

Går ud fra at det du vil er at første gang KEY_A_PRESSED vil du gemme værdien i (x1,y1) og når du igen slipper gemmes i værdien (x2,y2). Er det rigtigt forstået?

For at kunne gøre det i koden ovenfor, er du nød til at initialisere line_x1 og line_y1 til nul inden næste gang du forventer KEY_A_PRESSED... ellers vil den som du skriver altid opdatere (x2, y2).

if(KEY_A_PRESSED){


}else{
  //Brug line_x1, line_y1
  line_x1 = 0;
  line_y1 = 0;
}

En anden måde det kan gøres på er:
char First=0;

if(KEY_A_PRESSED){
  if(!First){ //First == 0
      line_x1 = x;
      line_y1 = y;
  }
  line_x2 = x;
  line_y2 = y;
}else{
  First = 0;
}
Avatar billede faerch Nybegynder
27. februar 2007 - 07:36 #4
Forresten. Hvis x og y altid er større end 0 når de anvendes, har følgende linje ingen effekt i din kode, idet det altid vil være opfyldt på dette tidspunkt:

if((line_x1!=0)&&(line_y1!=0)){
Avatar billede faerch Nybegynder
21. marts 2007 - 10:58 #5
Kan se at ud har oprettet spørgsmålet en gang mere her:
http://www.eksperten.dk/spm/764572
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester