Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Rysowanie domu w konsoli

Ostatnio zmodyfikowano 2013-11-23 17:17
Autor Wiadomość
lewica2
Temat założony przez niniejszego użytkownika
Rysowanie domu w konsoli
» 2013-11-16 17:09:23
Witam,
mam problem który polega na narysowaniu figury znakami kodu ASCII. Figurą jest "domek"- tz. prostokąt bez górnej krawędzi i daszek. Tyle o ile z narysowaniem prostokąta nie mam problemu to mam problem z dachem. Macie jakieś propozycje?
Na razie mam taką wersję:

C/C++
/*---------------------Program Prostokat_1------------------*/
/*  Program umozliwia narysowanie prostokata w trybie       */
/*  tekstowym. Znakiem rysujacym jest gwiazdka '*'.         */
/*  Dlugosc prostokata: 20                                  */
/*  Wysokosc prostokata: 10                                 */
/*----------------------------------------------------------*/
#include "stdafx.h"
#include <iostream>
#include "conio.h"

using namespace std;
//-------------------------------------------------------------
void Prostokat(); // deklaracja funkcji
//-------------------------------------------------------------
int main() // blok glowny

{
    Prostokat();
    _getch();
    return 0;
} // koniec bloku glownego
//------------------------------------------------------------

void Prostokat() // definicja funkcji
// rysujacej prostokat
{ int i, j;
    for( i = 1; i <= 20; i++ ) // krawedz gorna
         cout << "*";
   
    cout << endl;
   
    for( i = 1; i <= 8; i++ ) // boki
    {
        cout << "*";
        for( j = 1; j <= 18; j++ ) cout << " ";
       
        cout << "*\n";
    }
    for( i = 1; i <= 20; i++ ) // krawedz dolna
         cout << "*";
   
    cout << endl;
}
//------------------------------------------------------------
P-96346
RazzorFlame
» 2013-11-16 18:16:33
Spróbuj wyświetlić najpierw trójkąt a potem dwa połączone trójkąty (tyle że drugi odwrócony poziomo) bez środkowej ściany. Do tego wyświetlania użyłbym raczej funkcji do modyfikowania określonej pozycji w oknie konsoli. Znajdziesz takie funkcje w windows.h
P-96351
Matej
» 2013-11-16 18:21:43
Sposobów może być mnóstwo, ja napisałbym coś w tym stylu:

C/C++
void Roof( int width ) {
    char space = ' ';
    int s;
   
    for( int i = width; i >= 0; --i ) {
        for( int j = 0; j <= i; ++j ) {
            cout << space;
        }
        cout << "*";
        int s =( width - i ) * 2;
        for( int k = 0; k <= s; ++k ) {
            cout << space;
        }
        cout << "*" << endl;
    }
   
}

Domek też określałbym w parametrach jakie ma mieć wymiary.
P-96352
lewica2
Temat założony przez niniejszego użytkownika
» 2013-11-16 19:54:41
A czy moglibyście to w całej postaci? Zaczynam dopiero zabawę w C++ i chciałbym zobaczyć jak to powinno wyglądać
Będę bardzo wdzięczny
\Nie ukrywam że mam problem kompilacji tego co zostało napisane. Jak to należy wpisać do visuala?
P-96366
pekfos
» 2013-11-16 20:08:32
A czy moglibyście to w całej postaci? Zaczynam dopiero zabawę w C++ i chciałbym zobaczyć jak to powinno wyglądać
Nie.
» KursyKurs C++ kurs
P-96369
lewica2
Temat założony przez niniejszego użytkownika
» 2013-11-16 20:30:54
A czy oprócz tych bibliotek które mam już w kompilatorze wymagane są jeszcze jakieś?
P-96373
pekfos
» 2013-11-16 20:56:56
Nie.
P-96381
lewica2
Temat założony przez niniejszego użytkownika
» 2013-11-16 23:19:37
Kurdę... Poddaje się... dzięki za pomoc

Udało mi się COŚ wykreować, jednak pojawił się inny problem- chciałbym aby dach zaczynał się na 1 znaku a nie na 2 i aby jego szerokość była równa szerokości prostokąta.
Przyjmuje wcześniej ze szerokość prostokąta ma być nieparzysta i jest to zmienna a, jednak po kompilacji dach zaczyna się 2 znakami

C/C++
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <Windows.h>
#include <locale>

#define WYSOKOSC_KONSOLI 25 // wysokość ekranu
#define SZEROKOSC_KONSOLI 80 // szerokość ekranu

using namespace std;

void polskie_litery()
{
    locale locpl( "Polish_Poland" );
    locale::global( locpl );
    cout.imbue( locpl );
    cin.imbue( locpl );
}
//-------------------------------------------------------------
void Prostokat();
const int Esq = 27;
int main()
{
    polskie_litery();
    std::cout << "Witam w programie nr 57 \nNapisz program rysowania znakami ASCII figury."
    "Sam program powinien umożliwić:\n-wybór znaku kodu początkowego,\n-wszytanie wymiarów "
    "początkowych figury,\n-przesuwanie figury kursorami,\n-powiększanie oraz zmniejszanie figury za"
    "pomocą '+' oraz '-',\n-ogranicenie przesuwania figury oraz jej rozmiarów.\n\n \n\n\n";
    //-------------------------------------------------------------
    int a, b;
    cout << "Podaj szerokość: [A]: ";
    cin >> a;
    if( a % 2 == 0 )
    {
        do
        {
            cout << "\nLiczba " << a << " jest parzysta!" << endl;
            cout << "Wprowadź liczbę nieparzystą!" << endl;
            cout << "Podaj szerokość [A]: ";
            cin >> a;
        }
        while( a % 2 == 0 );
       
    }
    cout << "Podaj wysokość [B]: ";
    cin >> b;
    system( "cls" );
    cout << "Wybrałeś następujące wartości: " << endl;
    cout << "Szerokość: " << a << endl;
    cout << "Wysokość: " << b << endl;
    system( "PAUSE" );
    system( "cls" );
    //-------------------------------------------------------------
    int kod;
    while( true ) // pozornie nieskończona pętla
    {
        cout << "Podaj kod znaku ASCII od 0 do 127: ";
        cin >> kod; // wczytanie kodu znaku
        if( kod < 0 || kod > 127 ) // jeśli jest poza zakresem
             cout << "Bledna wartosc.\n\n"; // komunikat
        else // inaczej
             break; // przerwanie pętli
       
    }
    //-------------------------------------------------------------
    {
        system( "PAUSE" );
        system( "cls" );
    }
    //-------------------------------------------------------------
    {
        int i, j;
       
        for( int i = a; i >= 0; --i )
        {
            for( int j = 0; j <= i; ++j )
            {
                cout << " ";
            }
            cout <<( char ) kod;
            int s =( a - i ) * 2;
            for( int k = 0; k <= s; ++k )
            {
                cout << " ";
            }
            cout <<( char ) kod << endl;
        } //dach
        //-------------------------------------------------------------
        for( i = 1; i <= b - 2; i++ )
        {
            cout <<( char ) kod;
            for( j = 1; j <= a - 2; j++ )
                 cout << " ";
           
            cout <<( char ) kod;
            cout << endl;
        } //boki krawędź
        //-------------------------------------------------------------
        {
            for( i = 1; i <= a; i++ )
                 cout <<( char ) kod;
           
            cout << endl; //dolna krawędź
        }
    }
    //-------------------------------------------------------------
    _getch();
    return 0;
}
P-96393
« 1 » 2
  Strona 1 z 2 Następna strona