AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Das Haus vom Nikolaus Konsolenanwendung

Ein Thema von hotkey · begonnen am 20. Aug 2011 · letzter Beitrag vom 3. Sep 2011
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#1

AW: Das Haus vom Nikolaus Konsolenanwendung

  Alt 22. Aug 2011, 08:46
Das würde wohl auch die ganzen read bzw. readln erklären, wenn nach jedem 'x' oder jedem "Strich" des Hauses eine Pause gemacht wird, damit man die Entwicklung sieht.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.558 Beiträge
 
Delphi 12 Athens
 
#2

AW: Das Haus vom Nikolaus Konsolenanwendung

  Alt 22. Aug 2011, 08:54
Das würde wohl auch die ganzen read bzw. readln erklären, wenn nach jedem 'x' oder jedem "Strich" des Hauses eine Pause gemacht wird, damit man die Entwicklung sieht.
Wobei man sowas, vorallem bei einer Konsolenanwendung, extrem gut debuggen könnte, da sich Windows um das Zeichnen der Konsole kümmert und nicht die eigene Anwendung.

Aber das ReadLn am Schluß ist schon wichtig, wenn man das Programm micht über eine Konsole startet.
Also z.B. aus Delphi heraus oder über den Explorer.

Denn dort nimmt das Programm ja "seine" selbsterstellte Konsole mit und man sieht (fast) nix, ohne Debugger.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Aug 2011 um 08:58 Uhr)
  Mit Zitat antworten Zitat
AoN

Registriert seit: 2. Sep 2011
1 Beiträge
 
#3

AW: Das Haus vom Nikolaus Konsolenanwendung

  Alt 2. Sep 2011, 18:13
So hat man das ganze Haus; bei a wird die Größe eingegeben (Bis max. 80, da es sonst nicht mehr in die Konsole passt ).
Das mit a MOD ist da sonst die Diagonalen nicht ganz passen würden.
Code:
program Project1;
{$AppType Console}
var i, a, c, j: integer;
begin
   a := 10;
   if (a MOD 2) = 1 then
    a := a+1;
   c := (a div 2);
   for i := 0 to a do
   begin
    for j := 0 to a do
     if
    (((i=j) and (i>c)) or
    ((a-j=i) and (j<=c)))
    then
     write('X')
    else
     write(' ');
   writeLn
  end;
  for i := 0 to a do
  begin
   for j := 0 to a do
    if
    ((i=0) or (j=0) or (j=a) or (i=a) or (i=j) or (a-j=i))
    then
     write('X')
    else
     write(' ');
   writeLn
  end;
  readLn
end.
Viel Spaß damit =)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.558 Beiträge
 
Delphi 12 Athens
 
#4

AW: Das Haus vom Nikolaus Konsolenanwendung

  Alt 2. Sep 2011, 18:46
Wenn du
Delphi-Quellcode:
for i := 0 to a do
  begin
   for j := 0 to a do
die Y-Achse von -a/2 bis a laufen läßt und die Diagonalen mit
einem "Überlauf" versiehst (ABS(x) und x mod (a+1) ),
dabei noch die senkrechten im negativen Y-Bereich nicht anzeigst,
dann kannst du die erste Dachschleife dort mit integrieren.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.784 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Das Haus vom Nikolaus Konsolenanwendung

  Alt 2. Sep 2011, 20:03
etwas OT:

alles auf ein zweifarbiges BMP zeichnen das BMP nach AsciiArt umwandeln.

Dann die erhaltenen Zeichen zeilenweise ausgeben.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Das Haus vom Nikolaus Konsolenanwendung

  Alt 2. Sep 2011, 22:16
etwas OT:

alles auf ein zweifarbiges BMP zeichnen das BMP nach AsciiArt umwandeln.

Dann die erhaltenen Zeichen zeilenweise ausgeben.

Grüße
Klaus
oder auf einen Zettel malen, einscannen, OCR und dann ausgeben
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Singlepin

Registriert seit: 3. Sep 2011
10 Beiträge
 
#7

AW: Das Haus vom Nikolaus Konsolenanwendung

  Alt 3. Sep 2011, 08:43
Ich komme mir vor als sei ich zurückversetzt in die Zeiten von DOS, 8Bit-PC und Turbopascal.
Da gab es die Procedure GotoXY(x,y).
Mit der Konsole geht das auch.

Delphi-Quellcode:
{$APPTYPE CONSOLE}

uses
  SysUtils, Windows;

var
  TextWindow: TSmallRect;
  BufferInfo: TConsoleScreenBufferInfo;
  StdOut: THandle;
  i,j:Integer;

procedure GotoXY(X, Y: Smallint);
var NewPos: TCoord;
begin
Inc(X, TextWindow.Left - 1);
Inc(Y, TextWindow.Top - 1);
if (X >= TextWindow.Left) and (X <= TextWindow.Right) and
   (Y >= TextWindow.Top) and (Y <= TextWindow.Bottom) then
 begin
 NewPos.X := X;
 NewPos.Y := Y;
 SetConsoleCursorPosition(StdOut, NewPos);
 end;
end;

begin
Rewrite(Output);
StdOut := TTextRec(Output).Handle;
GetConsoleScreenBufferInfo(StdOut,BufferInfo);
TextWindow.Left := 0;
TextWindow.Top := 0;
TextWindow.Right := BufferInfo.dwSize.X - 1;
TextWindow.Bottom := BufferInfo.dwSize.Y - 1;
// hier mal eine Diagonale
for i:=1 to 20 do
  begin
  j:=i*2+10;
  gotoxy(i,j);write('x');
  end;

readln;
Acht Linien brauchen wir in der richtigen Reihenfolge.
Wenn ich mich richtig erinnere 8! = 8*7*6*5*4*3*2 = 40320 Möglichkeiten.
Viel Spaß beim probieren.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz