Rahmen zeichnen lassen



  • Guten abend, ich möchte für mein Programm einen rahmen zeichnen lassen,
    allerdings weiß ich wie unten zu sehen nicht mehr weiter wie ich das machen soll.

    Folgende bedingungen sollen gelten: es soll an allen 4 seiten der konsole jeweils ein kästchen freigehalten werden, sodass man praktisch den konsolen rahmen hat, dann eine luftige umrandung und dann mein gezeichneter rahmen....

    char *spielbereich ( void )
    {
       int y=0;
       int x=0;
    	char *Option1=NULL, *Option2=NULL, *Kommando=NULL;
    	STDIN_LEEREN;
    	konsole_loeschen ();
    	konsole_groesse (150,100);
    
    	for (y=0;y<50;y++)
    	{
    		for(x=0;x<97;x++)
    		{
    			konsole_gehe_zu_XY(x,y);
    			if(((x==2) && (y!=2) && (y!=50)) || /*hier weiss ich nicht weiter*/ printf("*");
    		}
    	}
    
    }
    

    vielen dank fürs Helfen



  • Drei Schleifen nacheinander:
    Obere Linie zeichnen
    Senkrechte Linien zeichnen
    Untere Linie zeichnen.



  • ja ok ,aber wie sieht das konrekt in c aus, ich will einfach nicht drauf kommen......



  • char *spielbereich ( void )
    {
       int y=0;
       int x=0;
    	char *Option1=NULL, *Option2=NULL, *Kommando=NULL;
    	STDIN_LEEREN;
    	konsole_loeschen ();
    	konsole_groesse (150,100);
    
    	for (y=0;y<100;y++)
    	{
    		for(x=0;x<150;x++)
    		{
    			konsole_gehe_zu_XY(x,y);
    			if(((x==2) && (y!=2) && (y!=50)) || /*hier find ich nicht die Loesung */printf("*");
    		}
    	}
    
    }
    

    so muss der code aussehen ,die zahlenwerte waren vorher falsch.....



  • etwas einfacher (weniger rechenaufwand) wäre es wie folgt:

    //obere linie
    for(x=2;x<150;x++)
    {
    konsole_gehe_zu_xy(x,2);
    printf("*");
    }
    
    //untere linie
    for(x=2;x<150;x++)
    {
    konsole_gehe_zu_xy(x,99);
    printf("*");
    }
    
    //linke linie
    for(y=2;y<100;y++)
    {
    konsole_gehe_zu_xy(2,y);
    printf("*");
    }
    
    //rechte linie
    for(y=2;y<100;y++)
    {
    konsole_gehe_zu_xy(149,y);
    printf("*");
    }
    

    voraussetzung dafür ist natürlich, daß der koordinatenursprung bei (1/1) liegt, wie es z.b. bei gotoxy() aus conio.h der fall ist. ansonsten muß das angepaßt werden.



  • Also wenn schon einfacher, dann:

    //obere und untere linie
    for(x=2;x<150;x++)
    {
    konsole_gehe_zu_xy(x,2);
    printf("*");
    konsole_gehe_zu_xy(x,99);
    printf("*");
    }
    
    //rechte und linke linie
    for(y=2;y<100;y++)
    {
    konsole_gehe_zu_xy(2,y);
    printf("*");
    konsole_gehe_zu_xy(149,y);
    printf("*");
    }
    


  • Ich hätte das jetzt in obere und unter Linie aufgeteilt, damit man auf das gehe_xy verzichten kann (der Cursor wird ka eine Spalte (x) weitergestellt)

    Und für einzelne Zeichen sollte man putchar() nehmen. Das ist wesentlich schneller (oder der Compiler ist so schlau und macht das).



  • vielen dank euch ^^


Anmelden zum Antworten