program w C++ [animacja]

0

Witam
Musze napisac program/ gre ktora bedzie sie opierala na animacji cos spadajacego po roznym torze lotu, cos podskakujacego itd. Najlepiej bez klas. Cos najbardziej prymitywnego. Musze to napisac w C++ i po dosem nie pod windowsem.

Pod Dosem mam na mysli uruchamianie sie dosowskiego okienka w windowsie.

myslalem nad czyms prostym jakas prosta strzelanka w 2d zalozmy:

  • gracz: kulka mala
  • cel: kwadraciki
    *bronie: pistolet( ruch pocisku po lini), granat (ruch po luku)

cos takiego tylko prsze chodzi o to zeby nie szalec. nie mialem jeszcze klas. najlepiej zeby bylo to w jednym pliku xxx.cpp bez korzytania z wlasno skonsrtuowanych bibliotek. Bardzo prosze o pomoc mam to na poniedzialek a dla mnie to troche za trudne a wiem ze jest tu duzo dobrych w tym ludzi i uczynnynch POMOZCIE prosze

0

wstyd to pokazywac, ale kazdy kiedys zaczynal :D

program nr 1:

#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>

const int ESC=2;

int X=40;                             //wspolrzedne naszego pojazdu
int czas=20,o=0;                         //zmienne potrzebne do czasy rundy
int punkty=0,speed=8,poziom=1,zycia=5;
int j=0;                                 //zmienna uzywana przy szybkosci
int a1=10,a2=45,a3=70,a4=20,a5=60,a6=15;               //poczatkowa wspolzedna x kamieni
int b1=10,b2=1,b3=15,b4=5,b5=2;                 //poczatkowa wspolzedna y kamieni

void pojazd(int x,int y,char znaczek,int kolor)    //pojazd
{
textcolor(kolor);
for(int w=0;w<3;w++)                      //rysowanie grubosci statku
{
gotoxy(x+w,y);
putch(znaczek);
gotoxy(x+w,y+1);
putch(znaczek);
//************ mazanie ekranu wokul maszego statku
gotoxy(x-1,y);putch(' ');
gotoxy(x+3,y);putch(' ');
gotoxy(x-1,y+1);putch(' ');
gotoxy(x+3,y+1);putch(' ');

gotoxy(x-2,y);putch(' ');
gotoxy(x+4,y);putch(' ');
gotoxy(x-2,y+1);putch(' ');
gotoxy(x+4,y+1);putch(' ');

gotoxy(x-3,y);putch(' ');
gotoxy(x+5,y);putch(' ');
gotoxy(x-3,y+1);putch(' ');
gotoxy(x+5,y+1);putch(' ');
}
}

void kamien(int x,int y, char znak)
{
gotoxy(x,y);
putch(znak);
}

void bum(int x)
{
pojazd(x,23,'^',4);
delay(20);
pojazd(x,23,' ',0);
}

int klawisze()
{
int c;
int zwrot;
if(!kbhit()) return 0;
c=getch();
if (c!=0) zwrot=(c==27 ? ESC : 0);
else{
c=getch();
switch (c){
case 77: if((X>4)&&(X<71))X=X+3;    //zeby nie wyjsc za ekran (chodzenie w prawo)
	 break;
case 75: if((X>7)&&(X<75))X=X-3;   //to samo co wyzej   (chodzenie w lewo)
	 break;
default: zwrot=0;
}}return zwrot;
};

void obcy()
{
textcolor(13);
if(b1==24){kamien(a1,b1,' '); a1=random(12)+12;b1=1;}  //czysci ekran na dole... i ustawia nawe wspolzedne
if(b2==24){kamien(a2,b2,' '); a2=random(12)+24;b2=1;}
if(b3==24){kamien(a3,b3,' '); a3=random(12)+36;b3=1;}
if(b4==24){kamien(a4,b4,' '); a4=random(12)+48;b4=1;}
if(b5==24){kamien(a5,b5,' '); a5=random(12)+60;b5=1;}

if(j>speed){j=0;b1++,b2++,b3++;b4++;b5++;}
j++;
kamien(a1,b1,'*');  kamien(a1,b1-1,' ');        //czysci ekran za lecacym kamieniem...
kamien(a2,b2,'*');  kamien(a2,b2-1,' ');
kamien(a3,b3,'*');  kamien(a3,b3-1,' ');
kamien(a4,b4,'*');  kamien(a4,b4-1,' ');
kamien(a5,b5,'*');  kamien(a5,b5-1,' ');
}

int main()
{
int gdriver=DETECT , gmode,d;
initgraph(&gdriver,&gmode,"");
do{
//**************************tryb graficzny****************
setcolor(random(15)+1);
outtextxy(100,300,"  Nacisnij ESC  ");
ellipse(150,200,d,d+10,80,50);
delay(5);
setcolor(0);
ellipse(150,200,d,d+10,80,50);
d=d+10;
}
while(klawisze()!=2);

restorecrtmode(); //wraca do trybu tekstowego
//************************tryb tekstowy******************
clrscr();      //czyszczenie obrazu
do{            //petla do while (cala gra w niej jest)

obcy();       //kamienie spadajace....

if(((a1==X)||(a1==X+1)||(a1==X+2))&&((b1==23)||(b1==22))){kamien(a1,b1,' ');bum(a1);a1=random(12)+12;b1=1;zycia--;sound(4678);delay(20);sound(3678);delay(10);nosound();gotoxy(60, 18);cprintf("     ");}  //X,X+1,X+2 szerokosc pojazdu  (SPRAWDZA KOLIZJE) , maze kamien
if(((a2==X)||(a2==X+1)||(a2==X+2))&&((b2==23)||(b2==22))){kamien(a2,b2,' ');bum(a2);a2=random(12)+24;b2=1;zycia--;sound(4678);delay(20);sound(3678);delay(10);nosound();gotoxy(60, 18);cprintf("     ");}  //X,X+1,X+2 szerokosc pojazdu  (SPRAWDZA KOLIZJE) , maze kamien
if(((a3==X)||(a3==X+1)||(a3==X+2))&&((b3==23)||(b3==22))){kamien(a3,b3,' ');bum(a3);a3=random(12)+36;b3=1;zycia--;sound(4678);delay(20);sound(3678);delay(10);nosound();gotoxy(60, 18);cprintf("     ");}  //X,X+1,X+2 szerokosc pojazdu  (SPRAWDZA KOLIZJE) , maze kamien
if(((a4==X)||(a4==X+1)||(a4==X+2))&&((b4==23)||(b4==22))){kamien(a4,b4,' ');bum(a4);a4=random(12)+48;b4=1;zycia--;sound(4678);delay(20);sound(3678);delay(10);nosound();gotoxy(60, 18);cprintf("     ");}  //X,X+1,X+2 szerokosc pojazdu  (SPRAWDZA KOLIZJE) , maze kamien
if(((a5==X)||(a5==X+1)||(a5==X+2))&&((b5==23)||(b5==22))){kamien(a5,b5,' ');bum(a5);a5=random(12)+60;b5=1;zycia--;sound(4678);delay(20);sound(3678);delay(10);nosound();gotoxy(60, 18);cprintf("     ");}  //X,X+1,X+2 szerokosc pojazdu  (SPRAWDZA KOLIZJE) , maze kamien

if(zycia==0){clrscr();
textcolor(6);gotoxy(37, 12);cprintf("Game Over");gotoxy(37, 13);cprintf("Doszedles(as) do poziomu %d ",poziom);         //jezeli stracisz zycie to napis... i koniec
sound(3565);delay(10);sound(4656);delay(20);sound(5456);nosound();delay(1000);
getch();
break;
}

if(o>100){o=0;czas--;}   // odlicza czas w tyl
o++;

textcolor(6);gotoxy(10, 7);cprintf("czas do konca rundy : %d ",czas);
if(czas==0){czas=20;poziom++;if(speed>2)speed=speed-1;}

textcolor(3);gotoxy(60, 13);cprintf("poziom : ");
textcolor(9);gotoxy(62, 14);cprintf(" %d ",poziom);

textcolor(4); for(int h=0;h<zycia;h++){ gotoxy(60+h, 18);cprintf("#");}
textcolor(2); gotoxy(60, 17);cprintf("zycia : ");

klawisze();
pojazd(X,23,'^',14);

}
while(klawisze()!=2);
}

program nr 2:

#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>

const int lewo=-1;
const int prawo=1;
const int ESC=2;

int tak=1,tak1=1,tak2=1,tak3=1,tak4=1; //potrzebne do punktow,aby nie zerowac wartosci za kazdym razem gdy sie ma jednakowa ilosc pinktow

int X=40,Y=6,XX,YY=23,punkty=0,strzal=0,szybkosc=20,poziom=1,niet=0,zyc=5;
int cc=75,ilo=5;
int j=0;

void obiekt(int x,int y, char znaczek)
{
gotoxy(x,y);
putch(znaczek);
}

int klawisz()
{
int c;
int zwrot;
if(!kbhit()) return 0;

c=getch();
if (c!=0) zwrot=(c==27 ? ESC : 0);
else{
c=getch();
switch (c){
case 77: zwrot=prawo;
	 if((X>4)&&(X<71))X=X+3;    //zeby nie wyjsc za ekran
	 break;
case 75: zwrot=lewo;
	if((X>7)&&(X<75))X=X-3;   //to samo co wyzej
	 break;
case 80: if(strzal==0){strzal=1;sound(3456);delay(10);nosound();
	 XX=X; }  //XX - jest to x pocisku, X - jest to x maszego statku
	 break;
default: zwrot=0;
}
}
return zwrot;
};


void samolot(int x,int y,char znaczek)    //samolocik
{
for(int d=0;d<1;d++)                      //rysowanie grubosci statku
{
gotoxy(x+d,y);
putch(znaczek);
gotoxy(x+d,y+1);
putch(znaczek);
gotoxy(x-1,y+1);
textcolor(19);
putch('#');
gotoxy(x+1,y+1);
putch('#');
textcolor(7);

//mazanie ekranu wokol naszego statku
gotoxy(x-1,y);
putch(' ');
gotoxy(x+3,y);
putch(' ');
//gotoxy(x-1,y+1);
//putch(' ');
gotoxy(x+3,y+1);
putch(' ');

gotoxy(x-2,y);
putch(' ');
gotoxy(x+4,y);
putch(' ');
gotoxy(x-2,y+1);
putch(' ');
gotoxy(x+4,y+1);
putch(' ');

gotoxy(x-3,y);
putch(' ');
gotoxy(x+5,y);
putch(' ');
gotoxy(x-3,y+1);
putch(' ');
gotoxy(x+5,y+1);
putch(' ');

gotoxy(x+2,y);
putch(' ');
gotoxy(x+2,y+1);
putch(' ');
gotoxy(x+1,y);
putch(' ');
gotoxy(x-5,y);
putch(' ');
gotoxy(x-5,y+1);
putch(' ');
gotoxy(x-4,y);
putch(' ');
gotoxy(x-4,y+1);
putch(' ');

}
}

void stat()     // stateczek na gorze
{
obiekt(cc,5,'0');       //statek obcych :))))
obiekt(cc+1,5,' ');     //mazanie ekranu za statkiem
if(j>szybkosc){ cc--;j=0;}   //szybkosc poruszania sie statku
j++;
if(cc<5){ niet++;obiekt(cc+1,5,' ');cc=75;} //jezeli dojedzie do konca,
}                                           //to od nowa rozpoczyna

void pocisk()  //pocisk ktorym strzelamy
{
if(strzal==1){ obiekt(XX,YY,'^');obiekt(XX,YY+1,' ');
YY--;
if(YY==0){obiekt(XX,1,' '); YY=23;strzal=0;}
}
}

void eksplozja(int x)
{
clrscr();
textcolor(RED);
gotoxy(x-1,4);putch('*');
gotoxy(x+1,4);putch('*');
gotoxy(x-1,6);putch('*');
gotoxy(x+1,6);putch('*');
delay(60);
gotoxy(x-2,3);putch('*');
gotoxy(x+2,3);putch('*');
gotoxy(x-2,7);putch('*');
gotoxy(x+2,7);putch('*');
gotoxy(x-1,4);putch(' ');
gotoxy(x+1,4);putch(' ');
gotoxy(x-1,6);putch(' ');
gotoxy(x+1,6);putch(' ');
delay(60);
gotoxy(x-2,3);putch(' ');
gotoxy(x+2,3);putch(' ');
gotoxy(x-2,7);putch(' ');
gotoxy(x+2,7);putch(' ');

}

int main()
{
int gdriver=DETECT , gmode;
initgraph(&gdriver,&gmode,"");
do{
setcolor(random(15));
settextstyle(20,0,116);
outtextxy(238,360,"\n\t\n Snajper v1.0 \n\t\n");
putpixel(random(640),random(480),18);
setcolor(65);
circle(320,180,100);
fillellipse(320,180,99,99);
line(310,60,330,300);
line(309,60,329,300);
line(311,60,331,300);
line(200,190,440,170);
line(200,189,440,169);
line(200,191,440,171);

setcolor(7);
outtextxy(50,420,"Projekt z WdP, grupa ID, autor: Jacek Migacz (5853) - Nacisnij ESC...  ");
settextstyle(12,0,12);

}
while(klawisz()!=2);

restorecrtmode(); //wraca do trybu tekstowego
clrscr();
_setcursortype(_NOCURSOR);
do{
stat();    //stateczek u gory
pocisk(); //pocisk
if((cc==XX)&&(YY==5)){eksplozja(cc);obiekt(cc+1,5,' '); cc=75;punkty++;}

if(niet>=ilo){sound(4678);delay(20);nosound();niet=0;zyc--;gotoxy(7, 19);

textcolor(zyc+5+128); cprintf("Stracies zycie!");}  //na dole bajer z zyciem

if((punkty==5)&&(tak==1)){tak=0; szybkosc=8;poziom=2;ilo=3;niet=0;}
if((punkty==10)&&(tak1==1)){tak1=0; szybkosc=6;poziom=3;ilo=3;niet=0;}
if((punkty==15)&&(tak2==1)){tak2=0;szybkosc=5;poziom=4;ilo=4;niet=0;}        //szybkosc na danym poziomie max 1
if((punkty==20)&&(tak3==1)){tak3=0; szybkosc=3;poziom=5;ilo=5;niet=0;}
if((punkty==25)&&(tak4==1)){tak4=0; szybkosc=1;poziom=6;ilo=7;niet=0;}

if(zyc==0){   //jesli f16 kaput...
clrscr();
textbackground(YELLOW);
textcolor(BLACK);
gotoxy(34, 12);cprintf("-=- Game Over -=-");
sound(3445);
delay(10);
sound(4566);    
delay(20);     
sound(3456);
nosound();
delay(1000);
getch();
break;
}

gotoxy(5, 14);textcolor(GREEN);cprintf("Punkty : %d ",punkty);
gotoxy(5, 15);textcolor(BLUE);cprintf("Poziom : %d ",poziom);
gotoxy(5, 16);textcolor(RED);cprintf("Zycie  : %d ",zyc);
textcolor(WHITE);

klawisz();
textcolor(YELLOW);
samolot(X,23,'|');
 
}

while(klawisz()!=2);
_setcursortype(_NORMALCURSOR);
}
0

Dzieki stary A teraz sprawa :( ja musze uzyc w tym stron. setactivpage itd :( albo biblioteki malloc ale to juz jest wyzsza szkola jazdy prosze pomoz :] [soczek]
Glownie chodzi oto zeby wysteppowal ruch po roznych torach np kulko moze sie toczyc rzut granatem bedzie lecial po luku strzal bedzie lecial po prostej glownie oto chodzi po roznych torach :( prosze pomoz

0

Dzieki stary A teraz sprawa :( ja musze uzyc w tym stron. setactivpage itd :( albo biblioteki malloc ale to juz jest wyzsza szkola jazdy prosze pomoz :] [soczek]

to juz ciezsza sprawa
nie wiem co to jest setactive page
a z mallokiem to nie poradze bo za czasow C tego nie pojalem a teraz mam GC :/

Glownie chodzi oto zeby wysteppowal ruch po roznych torach np kulko moze sie toczyc..

to niby masz w jednym z sorsow.. bo ruch tych ASCII jest jednostajny :D

rzut granatem bedzie lecial po luku strzal bedzie lecial po prostej glownie oto chodzi po roznych torach :( prosze pomoz

zeby lecial po luku, to tez nic prostego .. bo to wizyczny rzut ukosny
polecam lekture: http://www.fizyka.edu.pl/rzuty_praca.php</quote>

0

nic prostszego? Chyba dla ciebie :P ja nie umiem :(

0

to tez nic prostego ..

nie '<font color="red">nic prostszego</span>', a '<font color="brown">nic prostego</span>' == czyli <font color="blue">cos trudnego</span> :D

napisales ze chcesz cos prymitywnego a tzn ruch po luku to sporo zabawy

1 użytkowników online, w tym zalogowanych: 0, gości: 1