Prosím o radu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Prosím o radu – C / C++ – Fórum – Programujte.comProsím o radu – C / C++ – Fórum – Programujte.com

 

majkl
~ Anonymní uživatel
29 příspěvků
17. 12. 2008   #1
-
0
-

mám zatím jen začátek programu a už mi to nejde zkompilovat, projekt má zatím 2 soubory: main.cpp a clovek.h

zdrojový kód main.cpp vypadá takto:

#include <allegro.h>
#include "clovek.h"

void init();
void deinit();

Clovek *clovek = new Clovek();

void InitDoubleBuffering()
{
obrazovka = create_bitmap(1024, 768);
}

void VykresliBuffer()
{
blit(obrazovka, screen,0,0,0,0,1024,768);
}

int main() {

init();

InitDoubleBuffering();


clovek->init(obrazovka);

while (!key[KEY_ESC]) {
clovek->move();
}

deinit();
return 0;
}

void init() {
int depth, res;
allegro_init();
depth = desktop_color_depth();
if (depth == 0) depth = 32;
set_color_depth(depth);
res = set_gfx_mode(GFX_AUTODETECT, 1024, 768, 0, 0);
if (res != 0) {
allegro_message(allegro_error);
exit(-1)
};

install_timer();
install_keyboard();
install_mouse();
}

void deinit() {
clear_keybuf();
}}}}}}}}}}}}}};





a když to chci zkompilovat hlásí to tyto chyby:

main.cpp: In member function `void Clovek::move()':
main.cpp:9: error: expected primary-expression before "void"
main.cpp:9: error: expected `;' before "void"
main.cpp:14: error: expected primary-expression before "void"
main.cpp:14: error: expected `;' before "void"
main.cpp:19: error: expected primary-expression before "int"
main.cpp:19: error: expected `;' before "int"
main.cpp:36: error: expected primary-expression before "void"
main.cpp:36: error: expected `;' before "void"
main.cpp:54: error: expected primary-expression before "void"
main.cpp:54: error: expected `;' before "void"

make.exe: *** [main.o] Error 1


prosím nevíte někdo co s tím, předem díky...

Nahlásit jako SPAM
IP: 194.212.94.–
Bald3rr0
Super člen
17. 12. 2008   #2
-
0
-

Clovek je nějaká třída či struktura? Pokud ano, měla by poté pro deklaraci stačit Clovek clovek;

Nahlásit jako SPAM
IP: 82.100.0.–
crAzY^
~ Moderátor
+10
Grafoman
17. 12. 2008   #3
-
0
-

To Bald3rr : musí to být třída, páč v těch chybách se píše o členských funkcích.

Nahlásit jako SPAM
IP: 89.190.64.–
All you need is vision and time.
majkl
~ Anonymní uživatel
29 příspěvků
17. 12. 2008   #4
-
0
-

no ale co s tim mam teda dělat?
mě připadají ty chyby úplně nesmyslný...

Nahlásit jako SPAM
IP: 194.212.94.–
Bald3rr0
Super člen
17. 12. 2008   #5
-
0
-

To crAzY^ : Jsem se zasekl na řádku s tou alokací, přišlo mi to nějaké divné, dál už jsem moc nečetl :)
To majkl : Clovek clovek; místo Clovek *clovek = new Clovek(); nefunguje?

Nahlásit jako SPAM
IP: 82.100.0.–
Wizard0
Stálý člen
17. 12. 2008   #6
-
0
-

To majkl : problem je v tom, ze alokujes triedu 'Clovek' dynamicky mimo tela nejakej funkcie. Bud to sprav staticky ako napisal Bald3rr alebo takto:



Clovek *ptr; // pointer moze byt mimo tela funkcie
void init() {
// initalizacia
ptr = new Clovek(); // operator 'new' sa neda pouzit mimo tela funkcie
}

Nahlásit jako SPAM
IP: 85.216.182.–
majkl
~ Anonymní uživatel
29 příspěvků
17. 12. 2008   #7
-
0
-

možná se budete divit ale zkusil jsem obojí a pořád stejná chyba...

Nahlásit jako SPAM
IP: 194.212.94.–
crAzY^
~ Moderátor
+10
Grafoman
17. 12. 2008   #8
-
0
-

To majkl : nikde tam nevidím definice těch členských fcí třídy Clovek. Pokud jsou v souboru clovek.h je to chyba... měly by být v cpp :)

Nahlásit jako SPAM
IP: 89.190.64.–
All you need is vision and time.
KIIV
~ Moderátor
+43
God of flame
17. 12. 2008   #9
-
0
-

ono hlavne asi nedela stredniky za }


pak:

void deinit() {
clear_keybuf();
}}}}}}}}}}}}}};

kde sakra nabral takovejch zavorek? :D

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
17. 12. 2008   #10
-
0
-

To crAzY^ : deklarace se davaj do .h .... prilinkuje se az clovek.o (kterej se musi udelat z clovek.cpp) kde uz to musi byt definovane

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
majkl
~ Anonymní uživatel
29 příspěvků
18. 12. 2008   #11
-
0
-

všechno sem dal do main.cpp, který teď vypadá takto:

#include <allegro.h>

class Clovek{

private:
int x2;
int y2;
BITMAP *BMclovek;

public:

void setY2(int my){
y2 = my;
};

void setX2(int mx){
x2 = mx;
};


int getY(){
return mouse_y;
};

int getX(){
return mouse_x;
};

int getY2(){
return y2;
};

int getX2(){
return x2;
};

void init(){
BMclovek = load_bitmap("clovek.bmp", NULL);
setY2(700);
setX2(700);
};

void draw(){
masked_blit(BMclovek, screen,0,0,getX(),getY(),47,39);
};

void draw2(){
masked_blit(BMclovek, screen,0,0,getX2(),getY2(),47,39);
};

void hide(){
//rectfill(canvas, 512-23, getY(), 512+24, getY()+39, makecol(0,0,0));
};

void moveDown2(){
hide();
y2 += 6;
if (y2 > 750) y2 = 750;
draw2();
};

void moveUp2(){
hide();
y2 -= 6;
if (y2 < 10) y2 = 10;
draw2();
};

void moveLeft2(){
hide();
x2 -= 6;
if (x2 < 10) x2 = 10;
draw2();
};

void moveRight2(){
hide();
x2 += 6;
if (x2 > 1020) x2 = 1020;
draw2();
};


void move(){
if (mouse_b & 2){
if (mouse_x < x2 && mouse_y < y2){
while (mouse_x == x2 || mouse_y == y2){
moveRight2();
moveDown2();
};
if (mouse_x == x2){
while (mouse_y == y2){
moveDown2();
};

if (mouse_y == y2){
while (mouse_y == y2){
moveRight2();
};

if (mouse_x < x2 && mouse_y > y2){
while (mouse_x == x2 || mouse_y == y2){
moveRight2();
moveUp2();
};
if (mouse_x == x2){
while (mouse_y == y2){
moveUp2();
};

if (mouse_y == y2){
while (mouse_y == y2){
moveRight2();
};

if (mouse_x > x2 && mouse_y < y2){
while (mouse_x == x2 || mouse_y == y2){
moveLeft2();
moveDown2();
};
if (mouse_x == x2){
while (mouse_y == y2){
moveDown2();
};

if (mouse_y == y2){
while (mouse_y == y2){
moveLeft2();
};

if (mouse_x > x2 && mouse_y > y2){
while (mouse_x == x2 || mouse_y == y2){
moveLeft2();
moveUp2();
};
if (mouse_x == x2){
while (mouse_y == y2){
moveUp2();
};

if (mouse_y == y2){
while (mouse_y == y2){
moveLeft2();
};

if (mouse_x == x2 && mouse_y == y2){
draw();
};

};



};

void deinit();

Clovek *ptr;

ptr = new Clovek();


void InitDoubleBuffering()
{
obrazovka = create_bitmap(1024, 768);
};

void VykresliBuffer()
{
blit(obrazovka, screen,0,0,0,0,1024,768);
};

int main() {

init();

InitDoubleBuffering();


clovek->init(obrazovka);

while (!key[KEY_ESC]) {
clovek->move();
};

deinit();
return 0;
}

void init() {
int depth, res;
allegro_init();
depth = desktop_color_depth();
if (depth == 0) depth = 32;
set_color_depth(depth);
res = set_gfx_mode(GFX_AUTODETECT, 1024, 768, 0, 0);
if (res != 0) {
allegro_message(allegro_error);
exit(-1)
};

install_timer();
install_keyboard();
install_mouse();
/* add other initializations here */
};

void deinit() {
clear_keybuf();
/* add other deinitializations here */
}}}}}}}}}}}}}};



a pořád to hlásí tyto chyby:

main.cpp: In member function `void Clovek::move()':
main.cpp:163: error: expected primary-expression before "void"
main.cpp:163: error: expected `;' before "void"
main.cpp:168: error: expected primary-expression before "void"
main.cpp:168: error: expected `;' before "void"
main.cpp:173: error: expected primary-expression before "int"
main.cpp:173: error: expected `;' before "int"
main.cpp:190: error: expected primary-expression before "void"
main.cpp:190: error: expected `;' before "void"
main.cpp:208: error: expected primary-expression before "void"
main.cpp:208: error: expected `;' before "void"

make.exe: *** [main.o] Error 1

Nahlásit jako SPAM
IP: 194.212.94.–
KIIV
~ Moderátor
+43
God of flame
18. 12. 2008   #12
-
0
-

tady nekdo neumi dokoncovat bloky

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
18. 12. 2008   #13
-
0
-

proboha z kolika tisic stranek si to spatlal dohromady...


kdyz mas za if ( ... ) {
tak je dobre dat taky } za blok ke kteremu se to vztahuje....
urcite nepomuze kdyz nasazis }}}}}}}}}}} na konci programu... jako bys lepil parovod izolepou

za KAZDYM PRIKAZEM MUSI BYT ; tj. i za exit(-1);

nemluve o asi desitce dalsich nesmyslu ktery sem musel zlikvidovat aby se to dalo zkompilovat
pro jistotu ani nezkousim funkcnost.. ale podle toho jak je na tom kod, budes rad kdyz se to aspon nezhrouti :D

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
majkl
~ Anonymní uživatel
29 příspěvků
18. 12. 2008   #14
-
0
-

sem začátečník no...a nemohl by si tady napsat eště jednou ten kód a bez chyb?
moc prosím...

Nahlásit jako SPAM
IP: 194.212.94.–
KIIV
~ Moderátor
+43
God of flame
18. 12. 2008   #15
-
0
-

mam ho opravenej ale problem je jestli sou ty bloky spravne... precijen kdo se ma v necem takovym vyznat...

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
majkl
~ Anonymní uživatel
29 příspěvků
18. 12. 2008   #16
-
0
-

díky moc

Nahlásit jako SPAM
IP: 194.212.94.–
majkl
~ Anonymní uživatel
29 příspěvků
18. 12. 2008   #17
-
0
-

tak se to zkusil zkompilovat a napsalo mi to:

139: error: new types may not be defined in a return type
139: error: two or more data types in declaration of `deinit'
In function `void deinit()':
192: error: new declaration `void deinit()'
139: error: ambiguates old declaration `Clovek deinit()'

Nahlásit jako SPAM
IP: 194.212.94.–
KIIV
~ Moderátor
+43
God of flame
18. 12. 2008   #18
-
0
-

jo sem to jeste upravoval a zapomel sem za koncem definice objektu dat strednik...


tj radek 137 }; pred void deinit();

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
18. 12. 2008   #19
-
0
-
Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
majkl
~ Anonymní uživatel
29 příspěvků
18. 12. 2008   #20
-
0
-

no tak už to skoro funguje, ale eště něco se kompilátoru nelíbí:

[Linker error] undefined reference to `create_bitmap'
[Linker error] undefined reference to `_imp__screen'
[Linker error] undefined reference to `blit'
[Linker error] undefined reference to `_imp__key'
[Linker error] undefined reference to `_WinMain'
[Linker error] undefined reference to `_install_allegro_version_check'
[Linker error] undefined reference to `set_color_depth'

a asi ještě 50 dalších věcí.....

Nahlásit jako SPAM
IP: 194.212.94.–
Wizard
~ Anonymní uživatel
176 příspěvků
18. 12. 2008   #21
-
0
-

To majkl : zeby si zabudol prilinkovat kniznice allegra? :D

Nahlásit jako SPAM
IP: 193.87.174.–
KIIV
~ Moderátor
+43
God of flame
18. 12. 2008   #22
-
0
-

To Wizard : hadam ze spis nevi ze se to ma udelat

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
majkl
~ Anonymní uživatel
29 příspěvků
18. 12. 2008   #23
-
0
-

hadas sparavne, vůbec sem nepochopil co wizard napsal...

Nahlásit jako SPAM
IP: 194.212.94.–
crAzY^
~ Moderátor
+10
Grafoman
18. 12. 2008   #24
-
0
-

To majkl : a proč se pouštíš do allegra kyž o tom nic nevíš???, to sou takový lidi, který chtějprogramovat hry aniž by něco uměli. Doporučuju GameMaker

Nahlásit jako SPAM
IP: 89.190.64.–
All you need is vision and time.
majkl
~ Anonymní uživatel
29 příspěvků
18. 12. 2008   #25
-
0
-

ne díky gamemaker fakt ne...

Nahlásit jako SPAM
IP: 194.212.94.–
KIIV
~ Moderátor
+43
God of flame
18. 12. 2008   #26
-
0
-

to uz zalezi na tom co pouzivas... dev-cpp:


2) Make sure that you've got the Allegro headers and libraries added into the project correctly from the Project | Options | Parameters Tab. (ALT-P, select Parameters at the top.) It should be added in the Linker section (Add Libraries or Objects).


z: http://qa.techinterviews.com/q/20060815072317AAEnY1K


tj to ALT-P - zalozka parametry a tam:
do kompilator a c++ compilator: -DALLEGRO_STATICLINK
do linker: -lalleg_s -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lole32 -ldinput -lddraw -ldxguid -lwinmm -ldsound
to je teda aspon vytazene z ukazkoveho prikladu z balicku allegro

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
majkl
~ Anonymní uživatel
29 příspěvků
18. 12. 2008   #27
-
0
-

díky už to de...škoda že to jen nedělá to co bych chtěl... :(

Nahlásit jako SPAM
IP: 194.212.94.–
KIIV
~ Moderátor
+43
God of flame
18. 12. 2008   #28
-
0
-

viz. moje paticka

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
sputnikone+1
Věrný člen
19. 12. 2008   #29
-
0
-

Ach jo ,někteří lidé jsou zkrátka nepoučitelní

Nahlásit jako SPAM
IP: 82.209.55.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 55 hostů

Podobná vlákna

Prosím o radu! :) — založil brunoczech

Prosím o radu !!! — založil ospalka123

Prosím o radu — založil orei

Prosím o radu — založil Michal

Prosím o radu — založil dave3++

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý