Hallo frank94, wilkommen im Form!
Schon, dass sich einer gefunden hat, der ein bisschen mit dem Quelltext des CHDK's spielt.
Zu deinem 1. Problem: Die Textmeldung lässt sich nicht mit einem Rechteck nach Bestätigung überdecken.
Doch, der wartet aber nicht bis du einen Button gedrückt hast, sondern läuft einfach weiter. Du kannst aber ein art Callbackfunktion per Funktionspoiter definieren, die angesprungen wird sobald jemand eine Taste gedrückt hat. Beispielhaft so:
- Code: Alles auswählen
gui_mbox_init(LANG_MBOX_ABOUT_TITLE, (int)"Ballgame\n(c) fRaNk, 2009", MBOX_TEXT_CENTER, (int*)&draw_clear);
break;
Somit wird nach dem Buttonklick die Funktion draw_clear() aufgerufen.
Zu deiner 2. Frage: Bis jetzt habe ich den Ball nur als Kreis ohne Füllung dargestellt
Kann ich nicht ganz nachvollziehen,
- Code: Alles auswählen
draw_filled_ellipse(xPos, yPos, BALL_RADIUS, BALL_RADIUS, MAKE_COLOR(COLOR_RED, COLOR_BLACK));
geht bei mir.
Zur 3. Frage: wenn der Ball oben abprallt und die Kamera ist abgestürzt
Ja, das hängt denk ich an deiner Schrittweite. Du Überprüfst in deinen " Abprall Routinen" nur auf für Extremwerte. Das geht nur wenn du eine Schrittweite von 1 hast. Da die Schrittweite aber variabel ist, musst du diese auch einberechnen. Vielleicht so:
- Code: Alles auswählen
if (xPos+BALL_RADIUS>=screen_width-1 || xPos-BALL_RADIUS<=0)xMove*=-1;
if (yPos-BALL_RADIUS<=0)yMove*=-1;
if (xPos>=board_position && xPos<=board_position+board_length && yPos+BALL_RADIUS>=screen_height-15-BALL_RADIUS/2 && yMove>0){
yMove*=-1;
points++;
}
if(xPos+xMove>screen_width-1-BALL_RADIUS) xPos=screen_width-1-BALL_RADIUS; else if(xPos+xMove<BALL_RADIUS) xPos=BALL_RADIUS; else xPos+=xMove;
if(yPos+yMove>screen_height-1-BALL_RADIUS) yPos=screen_height-1-BALL_RADIUS; else if(yPos+yMove<BALL_RADIUS) yPos=BALL_RADIUS; else yPos+=yMove;
draw_filled_ellipse(xPos, yPos, BALL_RADIUS-1, BALL_RADIUS-1, MAKE_COLOR(COLOR_RED, COLOR_BLACK));
Du musst versuchen so viel wie möglich mit screen_width und screen_height zu arbeiten, damit es zu allen Kameras kompatibel bleibt. Außerdem nur das löschen/zeichnen was notwendig ist, zum Beispiel nur ein kleines Viereck an den Balken zeichnen und auf der anderen Seite ein kleines löschen.
Wenn du Fragen hast, immer her damit.
CHDKLover