Verktyg Visningsval
2012-06-22, 17:08   #1

mj123

Medlem

Registrerad: okt 2011

kan någon kika in i denna c++ problem (problem nr 2)


hejsan det var inte så länge sedan vi träffades :D, hur är det med er :) . i alla fall jag tänkte om ni kan hjälpa mig med ett litet problem här,
jag använder visual C++ express 2005 och får detta fel meddelandet:



1>------ Build started: Project: Basecode, Configuration: Debug Win32 ------
1>Compiling...
1>Active.cpp
1>c:\users\nti\desktop\studsboll\active.cpp(26) : error C2065: 'Sprite' : undeclared identifier
1>c:\users\nti\desktop\studsboll\active.cpp(26) : error C2227: left of '->SetPosX' must point to class/struct/union/generic type
1>        type is ''unknown-type''
1>c:\users\nti\desktop\studsboll\active.cpp(26) : error C2227: left of '->GetPosX' must point to class/struct/union/generic type
1>        type is ''unknown-type''
1>c:\users\nti\desktop\studsboll\active.cpp(26) : error C2227: left of '->GetVelX' must point to class/struct/union/generic type
1>        type is ''unknown-type''
1>Build log was saved at "file://c:\Users\nti\Desktop\Studsboll\Debug\BuildLog.htm"
1>Basecode - 4 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========










det här är Avtive.cpp filen där problemen dyker upp:
/***********************************************************
 * Active.cpp - När spelet är igång
 ***********************************************************/
#include "Game.h"

/** 
 * Hantera input från användaren, t.ex. tangentbord och joypad.
 */
void UpdateInput(void) {
	// uppdatera tangentbord och mus etc.
	Input.Update();

	if(Input.GetKeyState(CDXKEY_UPARROW)) {
		// Upp
		
	}

	if(Input.GetKeyState(CDXKEY_DOWNARROW)) {
		// Ner

	}

	if(Input.GetKeyState(CDXKEY_LEFTARROW)) {
		// Vänster
		//flytta spriten åt vänster (lägre värden åt vänster)
		Sprite->SetPosX(Sprite->GetPosX() - Sprite->GetVelX());

	}

	if(Input.GetKeyState(CDXKEY_RIGHTARROW)) {
		// Höger
		
	}
}

/**
 * Uppdatera objekt i spelet här, t.ex. sprites och kartor.
 */
void UpdateObjects(void) {
	//uppdatera animationer, fiender etc. här
	
    //flytta enligt bollens hastigheter
	Ball->SetPos(Ball->GetPosX() + Ball->GetVelX(),
	             Ball->GetPosY() + Ball->GetVelY());
	//studs mot nederkanten? byt riktning i y-led
	if (Ball->GetPosY() + 50 > 480) Ball->SetVelY(-Ball->GetVelY());
}


/**
 * Rita upp allting i denna!
 */
void Draw(void) {
	// rita allting här, till BackBuffer (eller Screen->GetBack())
    //fyll skärmen med svart
	BackBuffer->Fill(0);

	//rita spriten till skärmen
	Ball->Draw(BackBuffer, 0, 0, CDXBLT_TRANS);
  
	// flippa så att skärmytan i minnet (backbuffer) visas
	Screen->Flip();
}
mj123 är inte uppkopplad Folding
2012-06-22, 17:31   #2

Elgot

Moderator

Elgots avatar

Plats: Linköping

Registrerad: apr 2004

Vad är Sprite på rad 26 i Active.cpp? Det är det första felmeddelandet som dyker upp; börja där.
Elgot är inte uppkopplad
2012-06-22, 17:51   #3

mj123

Medlem

Registrerad: okt 2011

det är är en boll som jag ska kunna röra med tangenterna.
skulle du kunna förklara lite mer på det här: http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx
mj123 är inte uppkopplad Folding
2012-06-22, 18:24   #4

Elgot

Moderator

Elgots avatar

Plats: Linköping

Registrerad: apr 2004

Citat:
Ursprungligen inskrivet av mj123 Visa inlägg
det är är en boll som jag ska kunna röra med tangenterna.
Jo, det förstår vi, men vet kompilatorn det? Felmeddelandet antyder att objektet inte har definierats; hur ser Game.h ut?
Det andra felet beror på att kompilatorn inte känner igen typen hos Sprite (vilket inte är så konstigt då den inte har definierats), men det är bäst att lösa problemen i ordning; kanske räcker det med att lösa det första för att de andra skall försvinna...
Elgot är inte uppkopplad
2012-06-22, 19:14   #5

mj123

Medlem

Registrerad: okt 2011

ska kolla på det
mj123 är inte uppkopplad Folding
2012-06-22, 19:16   #6

mj123

Medlem

Registrerad: okt 2011

vart i Game.h ska jag tillägga det :

/***********************************************************
* Game.h - Variabler för sprites, kartor mm
***********************************************************/
#include "Main.h"
DECLARE CDXSprite* Ball;
// en konstant som sätter fönstrets titel
#define GAME_NAME "Skeleton"

// alltid med, skärmen och indata
DECLARE CDXScreen *Screen;
DECLARE CDXInput Input;

// referens till skärmytan i minnet, dit man ritar allt
DECLARE CDXSurface *BackBuffer;

//
// Lägg in dina variabler (objekt) här under
//
mj123 är inte uppkopplad Folding
2012-06-22, 21:33   #7

miffo

Medlem

miffos avatar

Plats: Stockholm

Registrerad: aug 2002

Jag ser ingen deklarering av variabeln Sprite någonstans.
Vilket ger
\active.cpp(26) : error C2065: 'Sprite' : undeclared identifier
Felen efter det är bara fel som följd av samma fel dvs.
Den är inte deklarerad och du försöker komma åt saker på den som verkar tillhör någon class/struct
__________________
orka
miffo är inte uppkopplad
2012-06-27, 12:17   #8

Dalton Sleeper

Medlem

Dalton Sleepers avatar

Plats: där solen lyser över 12

Registrerad: sep 2003

Det är inte Sprite som ska bytas ut mot Ball då, då ball är deklarerad som en viss sprite?
__________________
... I'm a dishwasher, yes I am ...
i7-3930K @ 4.5 GHz | 32GB Corsair Dominator GT @ 1866 MHz | Rampage IV Extreme x79 | 2 x 7970 OC 3GB @
1.0 GHz/1.5 GHz | Antec Quattro OC 1.2 Kw | Samsung LE40C655 40" | SteelSeries Siberia V2 | Pioneer HTP-070 5.1
Dalton Sleeper är inte uppkopplad
2012-07-06, 13:26   #9

mj123

Medlem

Registrerad: okt 2011

tjena allihopa, jag har varit borde en hel del. men nu är jag tillbaka. okej jag hittade problemet jag såg inte att den var deklarerad. jag deklarerade den och det funkade. men jag fick ett ytterliggare ett problemet. jag försökte styra bollen med vänster pilen. men bollen åkte inte till vänster håll. min kod är
if(Input.GetKeyState(CDXKEY_LEFTARROW)) {
		// Vänster
		Sprite->SetPosX(Sprite->GetPosX() - Sprite->GetVelX());
det här är koden för att styra den åt vänster håll
mj123 är inte uppkopplad Folding
2012-07-06, 15:30   #10

LeMisanthrope01

Avstängd

LeMisanthrope01s avatar

Plats: Lidingö

Registrerad: jun 2012

Citat:
Ursprungligen inskrivet av mj123 Visa inlägg
tjena allihopa, jag har varit borde en hel del. men nu är jag tillbaka. okej jag hittade problemet jag såg inte att den var deklarerad. jag deklarerade den och det funkade. men jag fick ett ytterliggare ett problemet. jag försökte styra bollen med vänster pilen. men bollen åkte inte till vänster håll. min kod är
if(Input.GetKeyState(CDXKEY_LEFTARROW)) {
		// Vänster
		Sprite->SetPosX(Sprite->GetPosX() - Sprite->GetVelX());
det här är koden för att styra den åt vänster håll
Hur ser SetPosX ut? Vi ser att någon funktion får en int men inte vad den gör med den.

Ett sätt att testa dig fram om du sitter fast är att skriva medelanden när saker och ting händer. Skriv std::cout<<"Vänster är tryckt"<<std::endl; efter if-satsen. Lite proffsigare kollar du debuggern vad som händer specifikt. Sätt en break point vid den raden.

Senast redigerad av LeMisanthrope01 2012-07-06 klockan 15:36.
LeMisanthrope01 är inte uppkopplad
2012-07-06, 17:12   #11

miffo

Medlem

miffos avatar

Plats: Stockholm

Registrerad: aug 2002

Citat:
Ursprungligen inskrivet av mj123 Visa inlägg
tjena allihopa, jag har varit borde en hel del. men nu är jag tillbaka. okej jag hittade problemet jag såg inte att den var deklarerad. jag deklarerade den och det funkade. men jag fick ett ytterliggare ett problemet. jag försökte styra bollen med vänster pilen. men bollen åkte inte till vänster håll. min kod är
if(Input.GetKeyState(CDXKEY_LEFTARROW)) {
		// Vänster
		Sprite->SetPosX(Sprite->GetPosX() - Sprite->GetVelX());
det här är koden för att styra den åt vänster håll
Skulle tro att GetVelX() returnerar 0 om in kulan rör sig hela tiden. Testa att byta ut det mot ett fast värde istället.
Du kan alltid kolla i debuggern vilket värde du får tillbaka på GetVelX()
__________________
orka
miffo är inte uppkopplad
Sök jobb