panacik v stvorci

Programovacie jazyky, rady, poradňa...
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

panacik v stvorci

Príspevok od používateľa reDo »

snazim sa urobit panacika ktory bude nieco zbierat avsak mam tam bug prosim ako to mam opravit hned na zaciatku dajte doprava a vylezie to z pola a ked zacnete hrat tak tam jeden stvorcek ostane vsak skuste

Kód: Vybrať všetko

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
bool checku(int pole[20][30])
{
int i;
for(i=1;i<29;i++)
if(pole[2][i]==178)
return false;
if(pole[1][1]==178)
return false;
return true;
}
bool checkd(int pole[20][30])
{
int i;
for(i=1;i<29;i++)
if(pole[19][i]==178)
return false;
return true;
}
bool checkr(int pole[20][30])
{
int i;
for(i=0;i<30;i++)
if(pole[i][28]==178)
return false;
return true;
}
bool checkl(int pole[20][30])
{
int i;
for(i=0;i<30;i++)
if(pole[i][1]==178)
return false;
return true;
}
void gotoxy(int x, int y)
{
COORD coord;
coord.X = y; coord.Y = x;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
int main()
{
int i=0, z=0;
    int pole[20][30];
    int in=0;
    int pom=178;
    int pom2=0;
    int x, y, xc, yc;

    for(i=0;i<20;i++)
    for(z=0;z<30;z++)
    pole[i][z]=0;

    for(i=0;i<30;i++)
    pole[0][i]=219;

    for(i=0;i<30;i++)
    pole[19][i]=219;

    for(i=0;i<20;i++)
    pole[i][29]=219;

    for(i=0;i<20;i++)
    pole[i][0]=219;

    pole[1][1]=178;


    for(i=0;i<20;i++)
    {
            printf("\n");
            for(z=0;z<30;z++)
            printf("%c",pole[i][z]); }

    x=1;
    y=1;
    xc=x;
    yc=y;
    while(1)
   {
      xc=x;
      yc=y;
      if(kbhit())
      {
      in=getch();


         if(in==72)
        {





      if(checku(pole)==true)
      {
      x--;
      pole[x][y]=178;
      gotoxy(x,y);
      printf("%c",pom);
      pole[xc][yc]=219;
      gotoxy(xc,yc);
      printf("%c",pom2);
      }

        }
         else if(in==80)
        {





      if(checkd(pole)==true)
      {
      x++;
      pole[x][y]=178;
      gotoxy(x,y);
      printf("%c",pom);
      pole[xc][yc]=219;
      gotoxy(xc,yc);
      printf("%c",pom2);
      }
        }
         else if(in==77)
        {




      if(checkr(pole)==true)
    {
      y++;
      pole[x][y]=178;
      gotoxy(x,y);
      printf("%c",pom);
      pole[xc][yc]=219;
      gotoxy(xc,yc);
      printf("%c",pom2);
      }
        }
         else if(in==75)
        {





      if(checkl(pole)==true)
      {
      y--;
      pole[x][y]=178;
      gotoxy(x,y);
      printf("%c",pom);
      pole[xc][yc]=219;
      gotoxy(xc,yc);
      printf("%c",pom2);
      }
        }



      else if(in==27)
      break;
      else
      ;
      }
   }



    /*
    gotoxy(11,11);
    printf("%c",pom);
    Sleep(1000);
    gotoxy(11,11);
    printf("%c",pom-178);
    gotoxy(12,11);
    printf("%c",pom);
    Sleep(1000);
    gotoxy(12,11);
    printf("%c",pom-178);
    gotoxy(13,11);
    printf("%c",pom);
    Sleep(1000);
    */
return 0;
}
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: panacik v stvorci

Príspevok od používateľa audiotrack »

nemám po ruke céčko, lebo nie som na svojom pc, ale vypadá že zle narábaš s tými poľami. for(i=1;i<29;i++) ti ide od druhého prvku po posledný, lebo pole začína číslovanie od 0 a končí na n-1. Keď je deklarované ako 30 tak 29 je posledný prvok. Ty asi chceš skončiť na predposlednom, nie?
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Re: panacik v stvorci

Príspevok od používateľa reDo »

j ale to mi nepomhlo ale este sa to zhorsilo otvoril sa bug v pravom hornom rohu hore
o-lox
Novice
Novice
Príspevky: 4
Registrovaný: 19 máj 2009, 8:06

Re: panacik v stvorci

Príspevok od používateľa o-lox »

Snad tě neporazí shlédnout toto řešení :smt006 viděl bych to na asi 4 úpravy - hotové :

Kód: Vybrať všetko

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
bool checku(int pole[20][30])
{
int i;
for(i=1;i<29;i++)
if(pole[1][i]==178)
return false;
return true;
}
bool checkd(int pole[20][30])
{
int i;
for(i=1;i<29;i++)
if(pole[18][i]==178)
return false;
return true;
}
bool checkr(int pole[20][30])
{
int i;
for(i=0;i<30;i++)
if(pole[i][28]==178)
return false;
return true;
}
bool checkl(int pole[20][30])
{
int i;
for(i=0;i<30;i++)
if(pole[i][1]==178)
return false;
return true;
}
void gotoxy(int x, int y)
{
COORD coord;
coord.X = y; coord.Y = x;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
int main()
{
int i=0, z=0;
    int pole[20][30];
    int in=0;
    int pom=178;
    int pom2=0;
    int x, y, xc, yc;

    for(i=0;i<20;i++)
    for(z=0;z<30;z++)
    pole[i][z]=0;

    for(i=0;i<30;i++)
    pole[0][i]=219;

    for(i=0;i<30;i++)
    pole[19][i]=219;

    for(i=0;i<20;i++)
    pole[i][29]=219;

    for(i=0;i<20;i++)
    pole[i][0]=219;

    pole[2][2]=178;


    for(i=0;i<20;i++)
    {
            for(z=0;z<30;z++)
            printf("%c",pole[i][z]);
            printf("\n");
	}

    x=2;
    y=2;
    xc=x;
    yc=y;
    while(1)
   {
      xc=x;
      yc=y;
      if(kbhit())
      {
      in=getch();


         if(in==72)
        {

      if(checku(pole)==true)
      {
      x--;
      pole[x][y]=178;
      gotoxy(x,y);
      printf("%c",pom);
      pole[xc][yc]=219;
      gotoxy(xc,yc);
      printf("%c",pom2);
      }

        }
         else if(in==80)
        {

      if(checkd(pole)==true)
      {
      x++;
      pole[x][y]=178;
      gotoxy(x,y);
      printf("%c",pom);
      pole[xc][yc]=219;
      gotoxy(xc,yc);
      printf("%c",pom2);
      }
        }
         else if(in==77)
        {

      if(checkr(pole)==true)
    {
      y++;
      pole[x][y]=178;
      gotoxy(x,y);
      printf("%c",pom);
      pole[xc][yc]=219;
      gotoxy(xc,yc);
      printf("%c",pom2);
      }
        }
         else if(in==75)
        {

      if(checkl(pole)==true)
      {
      y--;
      pole[x][y]=178;
      gotoxy(x,y);
      printf("%c",pom);
      pole[xc][yc]=219;
      gotoxy(xc,yc);
      printf("%c",pom2);
      }
        }



      else if(in==27)
      break;
      else
      ;
      }
   }



    /*
    gotoxy(11,11);
    printf("%c",pom);
    Sleep(1000);
    gotoxy(11,11);
    printf("%c",pom-178);
    gotoxy(12,11);
    printf("%c",pom);
    Sleep(1000);
    gotoxy(12,11);
    printf("%c",pom-178);
    gotoxy(13,11);
    printf("%c",pom);
    Sleep(1000);
    */
return 0;
}
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Re: panacik v stvorci

Príspevok od používateľa reDo »

velmi pekne dakujem ty si tam zmenil len toto vsak?!

Kód: Vybrať všetko

for(i=0;i<20;i++)
    {
            for(z=0;z<30;z++)
            printf("%c",pole[i][z]);
            printf("\n");
   }
o-lox
Novice
Novice
Príspevky: 4
Registrovaný: 19 máj 2009, 8:06

Re: panacik v stvorci

Príspevok od používateľa o-lox »

za málo. to samotné přesunuté odřádkování je ovšem na hony vzdálené celkovým 4 změnám, prohlídni pořádně funkce checku a checkd, tam jsou další tři změny.
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Re: panacik v stvorci

Príspevok od používateľa reDo »

ano to som potom nasiel aj sam ked som to hladal bez tvojivh uprav dikes

//autoeditácia príspevku (13 Mar 2010, 16:36)
Urobil som stvrocek pohybujuci sa v stvorci ktory zbiera smajlikov staci zmenit par veci a stvrocek sa zmeni na koliesko a pod.
velkost pola sa da zmenit tiez velmi jednoducho uvidite
Nejake napady pls ako to zlepsit by pomohli ako napr ako tam dat casovac ako odpocitavanie ale nepriatelov a pod.
pls
Prílohy
stvrocek.rar
(6.28 KiB) 20 stiahnutí
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: panacik v stvorci

Príspevok od používateľa audiotrack »

dať tomu grafiku, dos aplikácie sú už pár rokov out of date :)
a teraz vážne: po chvílke mi vyhodilo nejakú hlášku že môj košík je plný a už sa postavičky neukazovali. Dosť nuda, a neviem čo so zmenou na koliesko a pod si teda písal. Mohol by si ale spraviť nech panáčik (štvorček) ide zadaným smerom až kým nestlačím iný smer, lebo mačkať (držať) šípky je dosť oničom
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Re: panacik v stvorci

Príspevok od používateľa reDo »

dobre skusim to mne nezmizol ten stvorcek po tej hlaske, to stym kolieskom som myslel ze staci pomenit par veci a vypada to inak
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: panacik v stvorci

Príspevok od používateľa audiotrack »

štvorček nezmizol ani mne, ale už neboli smajlíky a tak som si behal po hracej ploche a nič z toho.
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Re: panacik v stvorci

Príspevok od používateľa reDo »

toto uz viem ale teraz sa snazim urobit hadika zatial iba 3castoveho ale mam tam take chyby pls ako to mam vyriesit popripade mi navrhnite lepsi algoritmus pls cosi som odkukal od dvoch snakov co mam tie dam tiez pls neco vymyslite tiez rozmyslam, tie cudzie hadiky su v prilohe

Kód: Vybrať všetko

#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <conio.h>


using namespace std;

bool checku(int pole[15][30])
{
int i;
for(i=1;i<29;i++)
if(pole[1][i]==219)
return false;
return true;
}

bool checkd(int pole[15][30])
{
int i;
for(i=1;i<29;i++)
if(pole[13][i]==219)
return false;
return true;
}

bool checkr(int pole[15][30])
{
int i;
for(i=1;i<14;i++)
if(pole[i][28]==219)
return false;
return true;
}

bool checkl(int pole[15][30])
{
int i;
for(i=1;i<14;i++)
if(pole[i][1]==219)
return false;
return true;
}

void gotoxy(int x, int y)
{
COORD coord;
coord.X = y; coord.Y = x;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

int main()
{   
	////////////////////////////////////////////////////////////////////////
	HANDLE  hConsole; 
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE); 
    int ram=177;
    int i=0, x=0; 
	char in=' ';
	int pole[15][30], smer=0; 
	int px=1, py=3, px1=1, py1=2, px2=1, py2=1, px3=1, py3=1;
	for(i=0;i<15;i++) 
    for(x=0;x<30;x++)
	pole[i][x]=0;
	//////////////////////////////////////////////////////////////////////////
	

    
	gotoxy(0,0);
	system("color 9");
	for(i=0;i<15;i++) {
	pole[i][0]=ram;
	}
	
	
	for(i=0;i<30;i++) {
	pole[0][i]=ram;
	}

	
	for(i=0;i<15;i++) {
	gotoxy(i,30);
	pole[i][29]=ram;
	}


	for(i=0;i<31;i++) {
	gotoxy(15,i);
	pole[14][i]=ram;
	}
    
    
    ///////////////////////////////////////////////////////////////////////////
    gotoxy(0,0);
	for(i=0;i<15;i++) {
	    for(x=0;x<30;x++)
		cout<<(char)pole[i][x];
	    cout<<endl;
	}
    
    gotoxy(1,1);
    pole[1][1]=219;
    pole[1][2]=219;
    pole[1][3]=219;
    SetConsoleTextAttribute(hConsole,  12 );
    cout<<(char)pole[1][1];
    cout<<(char)pole[1][2];
   cout<<(char)pole[1][3];
    ////////////////////////////////////////////////////////////////////////
	while(1){

    if(_kbhit())
	{
	in=_getch();
	}

	if(in==72&&checku(pole)==true){ //UP
	smer=1;
    }
    if(in==80&&checkd(pole)==true){//DOWN
	smer=2;
	}
	if(in==77&&checkr(pole)==true){//RIGHT
    smer=3;
	}
	if(in==75&&checkl(pole)==true){//LEFT
    smer=4;
	}
	
	if(smer==1&&checku(pole)==true)
	{
       px--;
          pole[px][py]=219;
          gotoxy(px,py);
          cout<<(char)219;
          pole[px3][py3]=0;
       gotoxy(px3,py3);
       cout<<(char)0;      
             px1=px;
             py1=py;
             px2=px1+1;
             py2=py1;
             px3=px2+1;
             py3=py2;
             
             }
 if(smer==2&&checkd(pole)==true)
	{
          px++;
          pole[px][py]=219;
          gotoxy(px,py);
          cout<<(char)219;
          pole[px3][py3]=0;
       gotoxy(px3,py3);
       cout<<(char)0;      
             px1=px;
             py1=py;
             px2=px1-1;
             py2=py1;
             px3=px2-1;
             py3=py2;  
             }
 if(smer==3&&checkr(pole)==true)
	{
          py++;
          pole[px][py]=219;
          gotoxy(px,py);
          cout<<(char)219;
          pole[px3][py3]=0;
       gotoxy(px3,py3);
       cout<<(char)0;      
             px1=px;
             py1=py;
             px2=px1;
             py2=py1-1;
             px3=px2;
             py3=py2-1;
             }
 if(smer==4&&checkl(pole)==true)
	{
       py--;
          pole[px][py]=219;
          gotoxy(px,py);
          cout<<(char)219;
          pole[px3][py3]=0;
       gotoxy(px3,py3);
       cout<<(char)0;      
             px1=px;
             py1=py;
             px2=px1;
             py2=py1+1;
             px3=px2;
             py3=py2+1;
             }
	
    if(in=='q')
	break;
    Sleep(200);
	
    in=' ';
	
    }
	
	
	_getch();

}
Prílohy
Hadiky.rar
Hadiky nie moje
(219.68 KiB) 13 stiahnutí
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: panacik v stvorci

Príspevok od používateľa audiotrack »

"ale mam tam take chyby" mi nič nehovorí. Aspoň napíš čo za chyby tam sú, nechce sa mi to hádzať do céčka
Napísať odpoveď