JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Spiel Programmieren?
Gehe zu Seite Zurück  1, 2, 3
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
dgorski
Mini JLI'ler



Anmeldedatum: 01.12.2003
Beiträge: 12
Wohnort: Borken
Medaillen: Keine

BeitragVerfasst am: 09.12.2003, 07:39    Titel: Antworten mit Zitat

So habe hier mal den quellcode, das läuft aber noch eine menge schief.


// GameDlg.cpp : Implementierungsdatei
//

#include "stdafx.h"
#include "Game.h"
#include "GameDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CGameDlg Dialogfeld

CGameDlg::CGameDlg(CWnd* pParent /*=NULL*/)
: CDialog(CGameDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CGameDlg)
// HINWEIS: Der Klassenassistent fügt hier Member-Initialisierung ein
//}}AFX_DATA_INIT
// Beachten Sie, dass LoadIcon unter Win32 keinen nachfolgenden DestroyIcon-Aufruf benötigt
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CGameDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGameDlg)
// HINWEIS: Der Klassenassistent fügt an dieser Stelle DDX- und DDV-Aufrufe ein
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CGameDlg, CDialog)
//{{AFX_MSG_MAP(CGameDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONUP()
ON_WM_RBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CGameDlg Nachrichten-Handler

BOOL CGameDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt
// wenn das Hauptfenster der Anwendung kein Dialogfeld ist
SetIcon(m_hIcon, TRUE); // Großes Symbol verwenden
SetIcon(m_hIcon, FALSE); // Kleines Symbol verwenden

// ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen
Bild[0].LoadBitmap(IDB_HINTERGRUND);
Bild[1].LoadBitmap(IDB_MANN1);
Bild[2].LoadBitmap(IDB_MANN2);
Bild[3].LoadBitmap(IDB_KOPF3);
Bild[4].LoadBitmap(IDB_KOPF4);
abfrage = 1;
nBild=1;
X=80;
Y=330;
TrefferFlag=0;

int step=10;//schrittweite
int strecke=850;//bewegungsstrecke
for (int i=0;i<=10000000;i++);
//MSG msg;
//int Return=PeekMessage(&msg,NULL,WM_MOUSEFIRST,WM_MOUSELAST,PM_REMOVE);
//if (Return!=0)
//{
// TranslateMessage(&msg);
//DispatchMessage(&msg);
//}


return TRUE; // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
}

// Wollen Sie Ihrem Dialogfeld eine Schaltfläche "Minimieren" hinzufügen, benötigen Sie
// den nachstehenden Code, um das Symbol zu zeichnen. Für MFC-Anwendungen, die das
// Dokument/Ansicht-Modell verwenden, wird dies automatisch für Sie erledigt.

void CGameDlg::OnPaint()
{

if (IsIconic())
{
CPaintDC dc(this); // Gerätekontext für Zeichnen
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Symbol in Client-Rechteck zentrieren
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Symbol zeichnen
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CPaintDC dc(this);
CPaintDC* pDC = &
BITMAP bmBackround;
Bild[0].GetObject(sizeof(bmBackround),&bmBackround);
//Bild[0] --> BITMAP bm;
CDC memDC;
memDC.CreateCompatibleDC(pDC);
//memDC.CreateCompatibleDC(pDc);
memDC.SelectObject(&Bild[0]);
RECT Rect;
GetClientRect(&Rect);
pDC->StretchBlt(0,0,Rect.right,Rect.bottom,&memDC,0,0,
bmBackround.bmWidth,bmBackround.bmHeight,SRCCOPY);
if (nBild!=0)

{
BITMAP bm; //BITMAP-Struktur bm deklarieren
Bild[nBild].GetObject(sizeof(bm),&bm); //Größe und Adresse von CBitmap Bild[nBild] --> BITMAP bm
CDC SpeicherDC;
SpeicherDC.CreateCompatibleDC(pDC); //SpeicherDC initialisieren
CBitmap *pOldImageBitmap = SpeicherDC.SelectObject(&Bild[nBild]); //Bild[nBild] --> Speicher
CDC MaskDC;
MaskDC.CreateCompatibleDC(pDC); //MaskDC initialisieren
CBitmap MaskBitmap;
MaskBitmap.CreateBitmap( bm.bmWidth, bm.bmHeight, 1, 1, NULL );
CBitmap *pOldMaskBitmap = MaskDC.SelectObject( &MaskBitmap );
SpeicherDC.SetBkColor( RGB(0,0,0) );
MaskDC.BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, &SpeicherDC, 0, 0, SRCCOPY );
CDC OrDC;
OrDC.CreateCompatibleDC( pDC );
CBitmap OrBitmap;
OrBitmap.CreateCompatibleBitmap( &SpeicherDC, bm.bmWidth, bm.bmHeight );
CBitmap *pOldOrBitmap = OrDC.SelectObject( &OrBitmap );
OrDC.BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, &SpeicherDC, 0, 0, SRCCOPY );
OrDC.BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, &MaskDC, 0, 0, 0x220326 );
CDC TempDC;
TempDC.CreateCompatibleDC( pDC );
CBitmap TempBitmap;
TempBitmap.CreateCompatibleBitmap( &SpeicherDC, bm.bmWidth, bm.bmHeight );
CBitmap *pOldTempBitmap = TempDC.SelectObject( &TempBitmap );
TempDC.BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, pDC, X, Y, SRCCOPY );
TempDC.BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, &MaskDC, 0, 0, SRCAND );
TempDC.BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, &OrDC, 0, 0, SRCPAINT );
pDC->BitBlt( X, Y, bm.bmWidth, bm.bmHeight, &TempDC, 0, 0, SRCCOPY );
TempDC.SelectObject( pOldTempBitmap );
OrDC.SelectObject( pOldOrBitmap );
MaskDC.SelectObject( pOldMaskBitmap );
SpeicherDC.SelectObject( pOldImageBitmap );
if (TrefferFlag == 4)
{
if (nBild == 0)
{
abfrage = 5;
}
abfrage=2;
}


}

CDialog::OnPaint();
}
}

// Die Systemaufrufe fragen den Cursorform ab, die angezeigt werden soll, während der Benutzer
// das zum Symbol verkleinerte Fenster mit der Maus zieht.
HCURSOR CGameDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}

void CGameDlg::OnLButtonDown(UINT nFlags, CPoint point)
{


TrefferFlag=0;
BOOL flag = FALSE;
int c = 0; //Zaehler
int step = 10; //Schrittweite
int strecke = 850; //Bewegungsstrecke

X=80;
HCURSOR hCursor;
hCursor = AfxGetApp()->LoadCursor(IDC_ZIELCURSOR); // Ziel-Cursor laden
SetCursor(hCursor); // Cursor anzeigen
//Cursor anzeigen;
for(c=0; c<=(strecke/step); c++)
{

if (flag == FALSE)
{
nBild = 1;
flag = TRUE;
}
else
{
nBild = 2;
flag = FALSE;
}
if(TrefferFlag==1)
{
int a=1;
nBild=4;
step=1;
strecke=0;
do
{
a++;
TrefferFlag=4;
}while(a!=99999999);

//if (TrefferFlag==2)
//{
// nBild=4;
// step=1;
// a=1;
// strecke=0;
// TrefferFlag=4;
// do
// {
// a++;

// }while(a!=99999999);

//}

if (TrefferFlag==4 && abfrage == 2)
{
if (nBild==4)
{
nBild=0;
}
}
//else
if (abfrage == 5 && nBild == 0)
{
TrefferFlag=0;
BOOL flag = FALSE;
int c = 0; //Zaehler
int step = 10; //Schrittweite
int strecke = 850; //Bewegungsstrecke
X=80;
HCURSOR hCursor;
hCursor = AfxGetApp()->LoadCursor(IDC_ZIELCURSOR); // Ziel-Cursor laden
SetCursor(hCursor);

for(c=0; c<=(strecke/step); c++)
{
if (flag == FALSE)
{
nBild = 1;
flag = TRUE;
}
else
{
nBild = 2;
flag = FALSE;
}

}
}
}






X = X + step;
CRect rect;
rect.top = Y + 30;
rect.bottom = Y + 185;
rect.left = X + 45;
rect.right = X + 120;
InvalidateRect(&rect, FALSE);
UpdateWindow();

// Abfangen von WM_..., hier alle Maus-Nachrichten:
MSG msg;
int Return = PeekMessage(&msg,NULL,NULL,NULL,PM_REMOVE);
if (Return != 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}


for(int i=0; i<=10000000; i++); //Pause
}

CDialog::OnLButtonDown(nFlags, point);
}

void CGameDlg::OnMouseMove(UINT nFlags, CPoint point)
{
HCURSOR hCursor;
hCursor = AfxGetApp()->LoadCursor(IDC_ZIELCURSOR); // Ziel-Cursor laden
SetCursor(hCursor); // Cursor anzeigen
CDialog::OnMouseMove(nFlags, point);
}
void CGameDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
HCURSOR hCursor;
hCursor = AfxGetApp()->LoadCursor(IDC_ZIELCURSOR); //Ziel-Cursor laden
SetCursor(hCursor); //Cursor anzeigen

CDialog::OnMouseMove(nFlags, point);
}


void CGameDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
// dc.LineTo((point.x+2),(point.y-3));
if( ((point.x > X+67) && (point.x < X+8Cool) && ((point.y > Y+33) && (point.y < Y+87)) )
{
int a=1;
TrefferFlag=1;
nBild=3;
InvalidateRect(NULL,FALSE);
UpdateWindow();
MessageBeep(0);

}

CClientDC dc(this); // Zeichen-dc
dc.MoveTo(point);
dc.LineTo((point.x+1),(point.y-1)); // "Trefferloch"
dc.LineTo((point.x+1),(point.y+1));
dc.LineTo((point.x-1),(point.y+1));
dc.LineTo((point.x-1),(point.y-1));
dc.LineTo((point.x+1),(point.y-1));
dc.MoveTo(point);
dc.LineTo((point.x+4),(point.y-4)); // "Trefferausstrahlungen"
dc.MoveTo(point);
dc.LineTo((point.x+5),(point.y+3));
dc.MoveTo(point);
dc.LineTo((point.x-2),(point.y+5));
dc.MoveTo(point);
dc.LineTo((point.x-4),(point.y+3));
dc.MoveTo(point);
dc.LineTo((point.x-5),(point.y-4));
dc.MoveTo(point);
dc.LineTo((point.x-3),(point.y-5));
dc.MoveTo(point);
dc.LineTo((point.x+2),(point.y-3));

CDialog::OnRButtonDown(nFlags, point);
}


So in diesem Code kann ich doch auch die gleiche figur wieder los rennen lassen wenn ich sie abgeschossen habe oder? Sie soll dann einfach gelöscht werden die erschossene. Und das mit dem chatten bekomme ich auch nicht hin hat einer eine idee?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2, 3
Seite 3 von 3

 
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