JerrMan Temat założony przez niniejszego użytkownika |
Czołgi C++ kilka błędów w programie » 2011-06-12 13:47:07 Witam to mój programik i nie wiem jak naprawić kilka błędów może ktoś mi pomoże.
http://www.przeklej.pl/plik/czolgi-v3-8-cpp-002ap53ed6jo
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <math.h> #include <dos.h> #include <graphics.h>
int ile_druzyn = 0, ile_w_druzynie = 0, sila_wiatr = 0, wiatr_mod = 3, martwi = 0, druzyny[ 8 ];
void inicjuj_ekran(), wybuch( int x, int y, int promien ), po_wybuchu( int x, int y, int promien ), wiatr();
struct uzbrojenie { int g, wiatr, opoznienie, promien, amunicja; char * nazwa; void pokaz_uzbrojenie(); uzbrojenie(); };
uzbrojenie::uzbrojenie() { g = wiatr = opoznienie = promien = amunicja = 0; nazwa = ""; }
void uzbrojenie::pokaz_uzbrojenie() { char buf[ 50 ]; setfillstyle( 1, 0 ); bar( 275, 461, 550, 480 ); if( amunicja > 0 ) sprintf( buf, "%-20s %3d amunicji", nazwa, amunicja ); else sprintf( buf, "%-20s", nazwa ); outtextxy( 275, 465, buf ); }
struct czolg { int x, y, kolor, zywy, sila, kat, bron, zdrowie, druzyna, numer, paliwo; uzbrojenie bronie[ 5 ]; void rysuj(), celowanie(), strzal(), osadz(), pokaz_zdrowie(), pokaz_ksp(), rusz_lewo(), rusz_prawo(); int sprawdz(); czolg(); } gracze[ 8 ][ 4 ];
czolg::czolg() { x = rand() % 600 + 20; y = 1; zywy = 1; paliwo = 100; sila = 500; kat = 0; zdrowie = 100; bron = 0; bronie[ 0 ].g = 10; bronie[ 0 ].promien = 25; bronie[ 0 ].wiatr = 1; bronie[ 0 ].opoznienie = 50; bronie[ 0 ].nazwa = "POCISK ARTYLERYJSKI"; bronie[ 0 ].amunicja = - 1; bronie[ 1 ].g = 0; bronie[ 1 ].promien = 10; bronie[ 1 ].wiatr = 0; bronie[ 1 ].opoznienie = 10; bronie[ 1 ].nazwa = "LASER"; bronie[ 1 ].amunicja = 100; bronie[ 2 ].g = - 10; bronie[ 2 ].promien = 25; bronie[ 2 ].wiatr = 1; bronie[ 2 ].opoznienie = 50; bronie[ 2 ].nazwa = "LUKOWKA"; bronie[ 2 ].amunicja = 20; bronie[ 3 ].g = 70; bronie[ 3 ].promien = 50; bronie[ 3 ].wiatr = 0.5; bronie[ 3 ].opoznienie = 75; bronie[ 3 ].nazwa = "BOMBA BALISTYCZNA"; bronie[ 3 ].amunicja = 1; bronie[ 4 ].g = rand() % 50; bronie[ 4 ].promien = rand() % 100; bronie[ 4 ].wiatr = rand() % 5; bronie[ 4 ].opoznienie = 50; bronie[ 4 ].nazwa = "SZALONA LUSKA"; bronie[ 4 ].amunicja = 1; }
void czolg::celowanie() { char a = 0; void far * ekran[ 961 ]; setcolor( kolor ); if( bronie[ bron ].amunicja == 0 ) bron = 0; setfillstyle( 1, kolor ); fillellipse( 30 + druzyna * 50, numer * 9 + 3, 2, 2 ); wiatr(); getimage( x - 13, y - 13, x + 17, y + 17, ekran ); while( kbhit() ) getch(); while( a != 27 ) { putimage( x - 13, y - 13, ekran, 0 ); setfillstyle( 1, 0 ); setcolor( kolor ); bronie[ bron ].pokaz_uzbrojenie(); pokaz_ksp(); line( x + 2, y + 2, x + 2 + cos( kat / 57.3 ) * 9, y + 2 - sin( kat / 57.3 ) * 9 ); circle( x + 2, y + 2, 15 ); a = getch(); switch( a ) { case 120: if( --kat < 0 ) kat = 359; break; case 122: if( ++kat > 360 ) kat = 0; break; case 97: if( --sila < 100 ) sila = 999; break; case 115: if( ++sila > 999 ) sila = 100; break; case 88: kat -= 10; if( kat < 0 ) kat = 360; break; case 90: kat += 10; if( kat > 359 ) kat = 0; break; case 65: sila -= 10; if( sila < 100 ) sila = 999; break; case 83: sila += 10; if( sila > 999 ) sila = 100; break; case 113: if( --bron < 0 ) bron = 4; if( bronie[ bron ].amunicja == 0 ) ungetch( a ); break; case 119: if( ++bron > 4 ) bron = 0; if( bronie[ bron ].amunicja == 0 ) ungetch( a ); break; case 101: putimage( x - 13, y - 13, ekran, 0 ); return; case 75: putimage( x - 13, y - 13, ekran, 0 ); rusz_lewo(); getimage( x - 13, y - 13, x + 17, y + 17, ekran ); break; case 77: putimage( x - 13, y - 13, ekran, 0 ); rusz_prawo(); getimage( x - 13, y - 13, x + 17, y + 17, ekran ); break; case 68: zdrowie = 0; return; case 13: putimage( x - 13, y - 13, ekran, 0 ); bronie[ bron ].amunicja--; strzal(); return; case 80: wiatr_mod = 50; break; } } closegraph(); exit( 0 ); }
void czolg::strzal() { float poc_x, poc_y, sila_pion, sila_poziom; bar( 0, 0, 639, 50 ); sila_poziom = cos( kat / 57.3 ) * sila; sila_pion = sin( kat / 57.3 ) * sila; poc_x = x + 2; poc_y = y - 3; while( poc_y < 460 ) { sound( floor( poc_y * 20 ) ); setcolor( 0 ); setfillstyle( 1, 0 ); fillellipse( floor( poc_x ), floor( poc_y ), 2, 2 ); poc_x +=( sila_poziom + bronie[ bron ].wiatr * sila_wiatr ) / 100; poc_y -= sila_pion / 100; if( poc_x <= 1 || poc_x >= 638 ||( bronie[ bron ].g <= 0 && poc_y < 0 ) ) { nosound(); return; } if( poc_y > 460 ) { poc_y = 460; } if(( getpixel( floor( poc_x ), floor( poc_y ) ) == 0 && getpixel( floor( poc_x + 1 ), floor( poc_y + 1 ) ) == 0 && getpixel( floor( poc_x + 1 ), floor( poc_y - 1 ) ) == 0 && getpixel( floor( poc_x - 1 ), floor( poc_y + 1 ) ) == 0 && getpixel( floor( poc_x - 1 ), floor( poc_y - 1 ) ) == 0 ) ||( getpixel( floor( poc_x ), floor( poc_y ) ) == kolor || getpixel( floor( poc_x + 1 ), floor( poc_y + 1 ) ) == kolor || getpixel( floor( poc_x + 1 ), floor( poc_y - 1 ) ) == kolor || getpixel( floor( poc_x - 1 ), floor( poc_y + 1 ) ) == kolor || getpixel( floor( poc_x - 1 ), floor( poc_y - 1 ) ) == kolor ) ) { setfillstyle( 1, kolor ); fillellipse( floor( poc_x ), floor( poc_y ), 2, 2 ); } else { break; } sila_pion -= bronie[ bron ].g; delay( bronie[ bron ].opoznienie ); wiatr(); } setcolor( 0 ); setfillstyle( 1, 0 ); wybuch( floor( poc_x ), floor( poc_y ), bronie[ bron ].promien ); po_wybuchu( floor( poc_x ), floor( poc_y ), bronie[ bron ].promien ); return; }
void czolg::pokaz_zdrowie() { char buf[ 10 ]; setfillstyle( 1, 0 ); bar( druzyna * 50, numer * 9, druzyna * 50 + 39, numer * 9 + 8 ); if( zdrowie > 0 ) setcolor( kolor ); else setcolor( 0 ); sprintf( buf, "%3d", zdrowie ); outtextxy( druzyna * 50, numer * 9, buf ); }
void czolg::pokaz_ksp() { char buf[ 50 ]; bar( 0, 461, 274, 480 ); sprintf( buf, "Sila: %3d Kat: %3d Paliwo: %3d", sila, kat, paliwo ); outtextxy( 1, 465, buf ); }
int czolg::sprawdz() { if( zywy == 1 ) if( zdrowie <= 0 ) { zywy = 0; osadz(); wybuch( x, y, 50 ); po_wybuchu( x, y, 50 ); setfillstyle( 1, 0 ); bar( x, y, x + 4, y + 4 ); if( --druzyny[ druzyna ] <= 0 ) martwi++; return 1; } else { rysuj(); return 0; } }
void czolg::rusz_lewo() { if( getpixel( x - 1, y + 2 ) != 6 &&( getpixel( x - 1, y + 20 ) == 6 || y > 435 ) && paliwo > 0 ) { bar( x, y, x + 4, y + 4 ); x--; paliwo--; osadz(); rysuj(); } }
void czolg::rusz_prawo() { if( getpixel( x + 5, y + 2 ) != 6 &&( getpixel( x + 5, y + 20 ) == 6 || y > 435 ) && paliwo > 0 ) { bar( x, y, x + 4, y + 4 ); x++; paliwo--; osadz(); rysuj(); } }
void czolg::rysuj() { setfillstyle( 1, 0 ); bar( x, y, x + 4, y + 4 ); osadz(); setfillstyle( 1, kolor ); bar( x, y, x + 4, y + 4 ); }
void czolg::osadz() { int k = y - 5; while( getpixel( x, k + 5 ) == 0 && getpixel( x + 4, k + 5 ) == 0 && k < 455 ) { k++; } y = k; }
int main() { srand(( unsigned ) time( 0 ) ); int graphdriver = 9, graphmode = 2, i, j, k, l; system( "cls" ); printf( " Czolgi v3.8 rel 1.4.2002\n" " Copyright (c) Juliusz \"JuLLaSS\" Sompolski `2002\n" " Magic Mushroom Laboratories 1998-2002 (r) All Rights Reserved\n\n" " Sterowanie: \'z\' i \'x\' - zmiana kata\n" " \'a\' i \'s\' - zmiana sily\n" " \'q\' i \'w\' - zmiana broni\n" " lewo i prawo - poruszanie sie\n" " \'e\' - opuszczenie kolejki\n" " \'D\' - samobojstwo\n" " ENTER - strzal\n" " ESCAPE - wyjscie\n\n" " Podaj liczbe druzyn (od 2 do 7): " ); scanf( " %d", & ile_druzyn ); if( ile_druzyn < 2 ) ile_druzyn = 2; if( ile_druzyn > 7 ) ile_druzyn = 7; printf( " Podaj liczbe czolgow w druzynie (od 1 do 4): " ); scanf( " %d", & ile_w_druzynie ); if( ile_w_druzynie < 1 ) ile_w_druzynie = 1; if( ile_w_druzynie > 4 ) ile_w_druzynie = 4; initgraph( & graphdriver, & graphmode, "" ); inicjuj_ekran(); for( i = 0; i <= ile_druzyn - 1; i++ ) { druzyny[ i ] = ile_w_druzynie; for( j = 0; j <= ile_w_druzynie - 1; j++ ) { gracze[ i ][ j ].kolor = i + 9; gracze[ i ][ j ].druzyna = i; gracze[ i ][ j ].rysuj(); gracze[ i ][ j ].numer = j; } } while( martwi < ile_druzyn - 1 ) for( i = 0; i < ile_w_druzynie; i++ ) for( j = 0; j < ile_druzyn; j++ ) { for( k = 0; k < ile_druzyn; k++ ) for( l = 0; l < ile_w_druzynie; l++ ) { gracze[ k ][ l ].pokaz_zdrowie(); if( gracze[ k ][ l ].sprawdz() == 1 ) { k = - 1; l = - 1; } } if( gracze[ j ][ i ].zywy == 1 && martwi < ile_druzyn - 1 ) gracze[ j ][ i ].celowanie(); } wybuch( 320, 240, 320 ); while( !kbhit() ); closegraph(); return( 0 ); }
void wybuch( int x, int y, int promien ) { int i, freq = 500; setcolor( 12 ); setfillstyle( 1, 12 ); for( i = 0; i < promien; i++ ) { fillellipse( x, y, i, i ); sound( 1000 + freq ); freq =- freq; delay( 5 ); } setcolor( 0 ); setfillstyle( 0, 12 ); for( i = 0; i < promien; i++ ) { fillellipse( x, y, i, i ); sound( 500 + freq ); freq =- freq; delay( 5 ); } nosound(); }
void po_wybuchu( int x, int y, int promien ) { int i, j; long double a; for( i = 0; i < ile_druzyn; i++ ) { for( j = 0; j < ile_w_druzynie; j++ ) { a = sqrt( pow( x + 2 - gracze[ i ][ j ].x, 2 ) + pow( y + 2 - gracze[ i ][ j ].y, 2 ) ); if( a <= promien ) gracze[ i ][ j ].zdrowie -= promien - floor( a ); } } }
void wiatr() { char buf[ 20 ]; sila_wiatr += rand() % wiatr_mod - wiatr_mod / 2; sprintf( buf, "Wiatr: %3d", sila_wiatr ); setfillstyle( 1, 0 ); bar( 550, 461, 640, 480 ); setcolor( 15 ); outtextxy( 550, 465, buf ); }
void inicjuj_ekran() { int x, y, zostalo = 0, dy; setcolor( 6 ); y = 350; for( x = 0; x <= 640; x++ ) { if( zostalo <= 0 ) { dy = rand() % 8 - 3; zostalo = rand() % 20 + 5; } y += dy; if( y <= 70 ) { y = 70; } if( y >= 400 ) { y = 400; } line( x, y, x, 460 ); zostalo--; } }
moje błędy to:
79 C:\Users\Jerry\Desktop\czolgi_v3.8\czolgi_v3.8.cpp [Warning] converting to `int' from `double'
kilkanaście razy w różnych linijkach 110,149,154-164,172,173:
110 C:\Users\Jerry\Desktop\czolgi_v3.8\czolgi_v3.8.cpp [Warning] passing `double' for converting 3 of `void line(int, int, int, int)'
2 razy powtarzający się 148,152 oraz 314,320:
148 C:\Users\Jerry\Desktop\czolgi_v3.8\czolgi_v3.8.cpp `sound' undeclared (first use this function)
152 C:\Users\Jerry\Desktop\czolgi_v3.8\czolgi_v3.8.cpp `nosound' undeclared (first use this function)
332 C:\Users\Jerry\Desktop\czolgi_v3.8\czolgi_v3.8.cpp [Warning] converting to `int' from `double'
Proszę o szybką odpowiedz. Z góry dziękuje. |