Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

Turbo Pascal- program wczytuący położenie hetmana na szachownicy

#1
Ściana  Turbo Pascal- program wczytuący położenie hetmana na szachownicy
Witam!
Mam wielki problem.
Potrzebny jest mi program który wczyta położenie hetmana na szachownicy i wyświetli te położenie pokazując które pola są w jego zasięgu.

Nic z tego nie rozumiem.
Prosze o szybką pomoc!!!!
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#2
RE: Turbo Pascal- program wczytuący położenie hetmana na szachownicy
Wystarczy użyć macierzy (tablicy dwuwymiarowej) i zaznaczyć pola atakowane przez hetmana (sam kiedyś musiałem zrobić to zadanie przy użyciu C++)
Może Ci się przyda mój program (tylko nie piszcie, że niezgodny ze standardem C++)
Kod:
#include <stdio.h>
#include <iostream.h>
#include <conio.h>

const int n=8;

void poziom_lewo(char szach[n][n], int w, int k)
{
   while(k>=0)
   {
      szach[w][k--]='*';
   }
}
void poziom_prawo(char szach[n][n], int w, int k)
{
   while(k<=7)
   {
      szach[w][k++]='*';
   }
}
void pion_gora(char szach[n][n], int w, int k)
{
   while(w>=0)
   {
      szach[w--][k]='*';
   }
}
void pion_dol(char szach[n][n], int w, int k)
{
   while(w<=7)
   {
      szach[w++][k]='*';
   }
}
void lewo_gora(char szach[n][n], int w, int k)
{
   while(k>=0&&w>=0)
   {
      szach[w--][k--]='*';
   }
}
void prawo_gora(char szach[n][n], int w, int k)
{
   while(k<=7&&w>=0)
   {
      szach[w--][k++]='*';
   }
}
void lewo_dol(char szach[n][n], int w, int k)
{
   while(k>=0&&w<=7)
   {
      szach[w++][k--]='*';
   }
}
void prawo_dol(char szach[n][n], int w, int k)
{
   while(k<=7&&w<=7)
   {
      szach[w++][k++]='*';
   }
}
void wieza(char szach[n][n], int w, int k)
{
   poziom_lewo(szach, k, w);
   poziom_prawo(szach, k, w);
   pion_gora(szach, k, w);
   pion_dol(szach, k, w);
   szach[k][w]='W';
}
void goniec(char szach[n][n], int w, int k)
{
   lewo_gora(szach, k, w);
   prawo_gora(szach, k, w);
   lewo_dol(szach, k, w);
   prawo_dol(szach, k, w);
   szach[k][w]='G';
}
void hetman(char szach[n][n], int w, int k)
{
   wieza(szach, w, k);
   goniec(szach, w, k);
   szach[k][w]='H';
}
void skoczek(char szach[n][n], int w, int k)
{
   if(w-2>=0&&k-1>=0)
            szach[w-2][k-1]='*';
   if(w-2>=0&&k+1<=7)
            szach[w-2][k+1]='*';
   if(w-1>=0&&k-2>=0)
            szach[w-1][k-2]='*';
   if(w-1>=0&&k+2<=7)
            szach[w-1][k+2]='*';
   if(w+2<=7&&k-1>=0)
            szach[w+2][k-1]='*';
   if(w+2<=7&&k+1<=7)
            szach[w+2][k+1]='*';
   if(w+1<=7&&k-2>=0)
            szach[w+1][k-2]='*';
   if(w+1<=7&&k+2<=7)
            szach[w+1][k+2]='*';
   szach[w][k]='S';
}

void wypelnij(char szach[n][n])
{
   for(int i=0; i<n; i++)
      for(int j=0; j<n; j++)
         szach[i][j]='ů';
}
void drukuj_z_oznaczeniami(char szach[n][n])
{
   int index=1;
   cout<<"  A B C D E F G H\n\n"<<index++<<' ';
   for(int i=0; i<n; i++)
   {
      for(int j=0; j<n; j++)
         cout<<szach[i][j]<<' ';
      if(index==9)
         break;
      cout<<'\n'<<index++<<' ';
   }
   cout<<"\n\n";
}
/////////////////////MAIN//////////////////////
void main()
{
   char szachownica[n][n];
   int kolumna, wiersz, pytanie, flaga=0;
   clrscr();
   wypelnij(szachownica);
   do
   {
      cout<<"Wybierz pozycje figury (np. zapis 2 5 to B5): ";
      cin>>wiersz>>kolumna;
   }while(wiersz<1||wiersz>8||kolumna<1||kolumna>8);
   kolumna--;
   wiersz--;
   do
   {
      cout<<"Wybierz figure:\n1.Hetman\n2.Wieza\n3.Goniec\n4.Skoczek\n5.Wszystkie figury ";
      cin>>pytanie;
      switch(pytanie)
      {
         case 1:hetman(szachownica, wiersz, kolumna);
         break;

         case 2:wieza(szachownica, wiersz, kolumna);
         break;

         case 3:goniec(szachownica, wiersz, kolumna);
         break;

         case 4:skoczek(szachownica, kolumna, wiersz);
         break;

         case 5:flaga=1;
         break;

         default:cout<<"Wybrales zla figure.\n";
      }
   }while(pytanie<1||pytanie>5);
   cout<<"Oto pola atakowane przez"<<endl;
   if(flaga==1)
   {
      hetman(szachownica, wiersz, kolumna);
      drukuj_z_oznaczeniami(szachownica);
      cout<<"hetmana...\n\n";
      getch();
      wypelnij(szachownica);
      wieza(szachownica, wiersz, kolumna);
      drukuj_z_oznaczeniami(szachownica);
      cout<<"...wieze...\n\n";
      getch();
      wypelnij(szachownica);
      goniec(szachownica, wiersz, kolumna);
      drukuj_z_oznaczeniami(szachownica);
      cout<<"...gonca...\n\n";
      getch();
      wypelnij(szachownica);
      skoczek(szachownica, kolumna, wiersz);
      drukuj_z_oznaczeniami(szachownica);
      cout<<"...skoczka\n\n";
      getch();
   }
   else
   {
      drukuj_z_oznaczeniami(szachownica);
      cout<<"\nOto pola atakowane przez ";
      if(pytanie==1)
         cout<<"hetmana.";
      if(pytanie==2)
         cout<<"wieze.";
      if(pytanie==3)
         cout<<"gonca.";
      if(pytanie==4)
         cout<<"skoczka";
      getch();
     }
}
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#3
RE: Turbo Pascal- program wczytuący położenie hetmana na szachownicy
A to jest w C++. A mi potrzeba w turbo pascalu.
Nie da sie tego jakos przerobić?
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#4
RE: Turbo Pascal- program wczytuący położenie hetmana na szachownicy
Pewnie, że się da, ale musiałby to zrobić ktoś, znający język C++ i Pascal.
Kod:
procedure poziom_lewo({macierz typu char},w:Integer,k:Integer);
begin
    repeat
        macierz[w][k]='*';
        Dec(k);
    until k>=0;
end;
Nie wiem, czy to dobrze zrobiłem.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
turbo pascal szachownicahetman turbo pascalpola atakowane przez hetmana c++program hetman turbo pascalszachownica pascalszachy pascalszacownica tablica pascal

Podobne wątki (Turbo Pascal- program wczytuący położenie hetmana na szachownicy)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Baza danych - dzialania, Pascal Jamuna 2 6251 10.04.2021, 19:08
Ostatni post: softwareman
  dev pascal, problem z funkcją kwadratową Sentinel24 4 11133 21.10.2016, 11:20
Ostatni post: koneton
  [Pascal/Delphi] Sortowanie quicksort oraz scalanie. Chudy2000 3 10659 01.05.2016, 22:34
Ostatni post: Szachista

Skocz do: