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

Permalänk
Medlem

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(); }

Permalänk
Hedersmedlem

Vad är Sprite på rad 26 i Active.cpp? Det är det första felmeddelandet som dyker upp; börja där.

Permalänk
Medlem

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/library/0z8wd049(v=vs.80).asp...

Permalänk
Hedersmedlem
Skrivet av mj123:

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...

Permalänk
Medlem

ska kolla på det

Permalänk
Medlem

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
//

Permalänk
Medlem

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

Visa signatur

orka

Permalänk
Medlem

Det är inte Sprite som ska bytas ut mot Ball då, då ball är deklarerad som en viss sprite?

Permalänk
Medlem

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

Permalänk
Skrivet av mj123:

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.

Permalänk
Medlem
Skrivet av mj123:

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()

Visa signatur

orka