Probleme beim Programmieren in C

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Probleme beim Programmieren in C

Beitragvon frank94 » 17.06.2009, 18:26

Hallo an alle Forenbenutzer
Ich bin dabei C zu lernen, und habe ein kleines Spiel für CHDK programmiert.
Dabei habe ich einfach die datei /core/gui_sokoban.c modifiziert. (Anhang)
Allerdings habe ich ein paar Probleme:

l. 58: Die Textmeldung lässt sich nicht mit einem Rechteck nach Bestätigung überdecken

l. 78: Bis jetzt habe ich den Ball nur als Kreis ohne Füllung dargestellt. Wenn ich aber einen gefüllten Kreis nehme, erscheinen Rechtecke, wenn der Ball oben abprallt und die Kamera ist abgestürzt.

Btw: Kann man den Ball auch anders bewegen, sodass er nicht flackert?
Habe ich den frame counter richtig programmiert? Es zeigt immer 9fps an, es müsste doch normalerweise mal weniger mal mehr werden, v A wenn ich das Programm erweitere?

Danke für eine Antwort
frank
Dateianhänge
gui_sokoban.c
Mein Ballspiel xD
(4.04 KiB) 277-mal heruntergeladen
frank94
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 2
Registriert: 17.06.2009, 18:11

Beitragvon C4_87 » 17.06.2009, 21:06

ich hab zwar keine ahnung vom proggen
aber ich glaub das es doch nur ne abgespeckte variante von c ist...und daher einige befehle nicht gehen

auserdem müssten ja mal ein paar grafik bibos eingepflegt werden...

müsst sich mal einer der progger melden^^
erstmal kein CHDK mehr für mich :)

http://zephyrc4.deviantart.com

[irgenwie hab ich ja mit den : ^^] ^^
Benutzeravatar
C4_87
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 250
Bilder: 5
Registriert: 13.06.2008, 11:26
Wohnort: Jetzt in DD

Beitragvon CHDKLover » 18.06.2009, 08:12

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
Zuletzt geändert von CHDKLover am 18.06.2009, 15:35, insgesamt 1-mal geändert.
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon frank94 » 18.06.2009, 15:25

Danke für die Hilfe, CHDKLover!!! =D>

Ich glaube zwar nicht, dass mein Spiel jemals in den trunk aufgenommen werden wird, aber ich habe schon angefangen, alle Zahlen in das Verhältnis zur Größe des Kamerabildschirms zu stellen.
Meine Pläne:
- Highscore auf Zeit
- Board so verändern dass der Ball an versch. Stellen verschieden abprallt, damit man den Ball "steuern" kann
- Noch ein paar Specials dazu programmieren
my Cam: a570IS - firmware 1.01a
frank94
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 2
Registriert: 17.06.2009, 18:11


Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 25 Gäste