JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=6e5030224b8f4c7a2969eaaeb4230b83Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Brauche Tips für Felder

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
DerJJ
Junior JLI'ler



Anmeldedatum: 24.12.2002
Beiträge: 84

Medaillen: Keine

BeitragVerfasst am: 12.02.2003, 14:37    Titel: Brauche Tips für Felder Antworten mit Zitat

Also,
ich würde es ganz gut finden wenn ihr mir mal Tips geben könntet wie ich am einfachsten rausfinde ob auf ein Feld geklickt wurde, und auf welches Feld geklickt wurde!

Ich hab hald mein Spielfeld, das geht von x 10 - 810 und y 10 - 610...
Das will ich in 50ger schritten in ein Feld aufteilen, also ich würde jetzt 16*12*2 if Anweisungen schreiben um herauszufinden wo ich geklickt habe! Das muss doch auch einfacher gehen! Und dann auchnoch überprüfen was für ein Wert diese Variable hat, dann müsste ich das ergebniss nochmal *5 oder so nehmen damit ich weiß wieviel IF Anweisungen ich schreiben müsste. Und, ich will dann an der Stelle ein Bild ausgeben, müsste ich dann extra nochmal überprüfen wo geklickt wurde? oder kann ich das irgendwie von den Variablen abhängig machen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael
JLI'ler



Anmeldedatum: 20.07.2002
Beiträge: 173
Wohnort: Münster / NRW
Medaillen: Keine

BeitragVerfasst am: 12.02.2003, 15:07    Titel: Antworten mit Zitat

hol dir mit GetCursorPos() die Position des Cursors. Dann rechnest du:
Code:

POINT p;
GetCursorPos(&p);

int FeldInXRichtung = (Pos.x - 10) / 50;
int FeldInYRichtung = (Pos.y - 10) / 50;


Dann hast du den Index des aktuellen Feldes, und zwar 0-15 in x- und 0-11 in y-richtung!
_________________
Es geht auch ohne Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
=]Mid[=]Night[=
Super JLI'ler



Anmeldedatum: 20.11.2002
Beiträge: 380
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 12.02.2003, 15:09    Titel: Antworten mit Zitat

Also, du musst doch die Position haben, wo du hingeklickt hast. Die Koordinaten musst du nur noch durch die Feldbreite auf der jeweiligen Achse (X-Koordinate durch Feldbreite in X-Richtung, Y genauso) teilen und dann abrunden. Dann hast du die Position von dem Feld.

edit: oh war einer schneller


Zuletzt bearbeitet von =]Mid[=]Night[= am 12.02.2003, 15:10, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 12.02.2003, 15:10    Titel: Antworten mit Zitat

Das ist doch eigentlich ganz trivial... Mathe aus der 5. Klasse:

Code:

int tile_x = cursor_x / TILE_WIDTH;
int tile_y = cursor_y / TILE_HEIGHT;

// Wenn du dann noch wissen willst, welcher Pixel innerhalb des Tiles geklickt wurde, nimmst du ganz einfach den Rest(Modulo) der Division:

int pixel_x = cursor_x % TILE_WIDTH;
int pixel_y = cursor_Y % TILE_HEIGHT;


Ich hoffe mal, dass das einigermaßen einleuchtend und verständlich war... wenn nicht, einfach mal'n kariertes Blatt Papier nehmen uns ausprobieren... So hab ich das auch gemacht.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DerJJ
Junior JLI'ler



Anmeldedatum: 24.12.2002
Beiträge: 84

Medaillen: Keine

BeitragVerfasst am: 12.02.2003, 16:02    Titel: Antworten mit Zitat

mmmhh... irgendwie komm ich mir jetzt blöd vor..
Aber danke!
Hab jetzt nochn problem...
Die MessageBox wird nich aufgerufen... wenn ich aber jedesmal '!=0' anstatt '==0' schreibe dann gehts...
Code:
case WM_CREATE:
int x,y;
y=0;
x=0;
do
{
Feld[x][y]=0;
if(x==15)
{
if(y==11)
{
break;
}
y++;
x=-1;
}
x++;
}while(x<=15);
break;

...


case WM_LBUTTONDOWN:

int xFeld;
int yFeld;

x = LOWORD(lParam);
y = HIWORD(lParam);
if(x>=10&&x<=810&&y>=10&&y<=610)
{
xFeld=(x-10)/50;
yFeld=(y-10)/50;
if(Feld[xFeld][yFeld]==0&&Feld[xFeld+1][yFeld]==0&&Feld[xFeld][yFeld+1]==0&&Feld[xFeld+1][yFeld+1]==0)
{
MessageBox(0,"Test","Test",MB_OK);
}
}

Helft mir plz...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DerJJ
Junior JLI'ler



Anmeldedatum: 24.12.2002
Beiträge: 84

Medaillen: Keine

BeitragVerfasst am: 16.02.2003, 18:18    Titel: Antworten mit Zitat

Also, das obere hat sich erledigt,
jetzt will ich alles Überprüfen, ob irgendwo ein Haus steht...
also, wenn die variable 1 ist, und rechts daneben, dadrunter und beides auch 1, dann steh da ein Haus;

ich sitze jetzt schon den ganzen tag dadran, also langsam könnten auch schon Idiotenfehler drin sein,
am Anfang wars ne Endloschleife die nich ausgehen wollte...
jetzt hab ich das Haus überall...
und ich weis net wieso....

hier mal der Code:
Code:
Feld[7][5]=1;
                  Feld[8][5]=1;
                  Feld[8][6]=1;
                  Feld[7][6]=1;

                  for(a=1;a<16;a++)
                  {
                     a--;
                     
                     if(Feld[a][b]==1&&Feld[a+1][b]==1&&Feld[a][b+1]==1&&Feld[a+1][b+1]==1);
                     {
                        BitBlt(hdc,(a*50)+10,(b*50)+50,Kontrollzentrum.bmWidth,Kontrollzentrum.bmHeight,hdcKontrollzentrum,0,0,SRCCOPY);
                     }
                     a++;
                     if(b==11&&a==15)
                     {
                        a=150;
                        MessageBox(0,"wirklich ende","muh",MB_OK);
                     }
                     
                     
                     
                     if(a==15)
                     {
                        
                        a=-1;
                        b++;
                     }
                  }
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 18.03.2003, 19:37    Titel: Antworten mit Zitat

DerJJ hat Folgendes geschrieben:
Code:
if(a==15)
{
a=-1;
b++;
}


Warum schreibst du hier
Code:
a=-1;
Question

So wird a am Ende der Schleife erweitert, also a=0.
Später verkleinerst du a wieder, anscheinend wegen der grafischen Darstellung. Arrow a=-1 Exclamation

Und so greifst du auf ein ungültiges Element von Feld zu(es gibt nur Feld[0-6][0-4]) Exclamation

Du solltest also schreiben:
Code:
a=0;

Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum