Sternchenprogramm in Ansi C



  • Hi Leute,
    Ich bin in C ein ziemlicher Anfänger und ich habe mir gerade einmal gedacht, dass es doch ganz schön wäre mal nur so aus Fun ein Programm zu schreiben, mit dem man auf dem Bildschirm sternchen malen kann.
    Also ganz einfach:

    Man drückt auf dem Tastenblock die nach Oben taste:
    Sternchen werden nach Oben hin gezeichnet.
    Man drückt auf dem Tastebblock die nach Unten taste:
    Sternchen werden nach unten gezeichnet... nun weiß ich jedoch nicht genau, wie ich das machen soll... mein Code sieht wiefolgt aus:

    #include <conio.h>
    #include <stdio.h>
    
    void main (void)
    {
    int posx,posy,stern; char star; posy=1; posx=1; stern=15; star=75; clrscr();
    
    do
    {
    	star=getch();
    
    	if (star=75)
    	{
    	gotoxy(posx,posy);posx--;
    	printf("%c",stern);}
    
    	if (star=80)
    	{
    	gotoxy(posx,posy);
    	posy++;
    	printf("%c",stern);}
    
    	if (star=77){
    	gotoxy(posx,posy);
    	posx++;
    	printf("%c",stern);}
    
    	if (star=72){
    	gotoxy(posx,posy);
    	posy--;
    	printf("%c",stern);}
    }
    	while(star>20000);
    	getch();
    }
    

    Doch der Compiler meckert bei mir und meint erstens, dass die Variable "Star" ein Value wäre, der nie geused wird 🙂
    Was genau ist damit gemeint? Und er meint auch frecherweise noch bei der ersten IfAbfrage zu meckern und nicht zu raffen, was er zutun hat 🙂 🙂 🙂

    Ich hoffe ihr könnt mir helfen
    David

    PS: 😋 😋 😋 🙂 🙂 🙂 😉 😉 😉 😃



  • Die beiden Compiler Meldungen hängen zusammen. Das "=" ist eine Zuweisung. Du weist der Variablen "star" jeweils den Wert zu mit dem Du den Inhalt von Star eigentlich vergleichen möchtest und daher wird "star" nie lesend verwended.
    Um zwei Werte zu vergleichen musst Du "==" verwenden.
    z.B.:

    if (star==75)
    {
    gotoxy(posx,posy);
    posx--;
    printf("%c",stern);
    }



  • Ich bin ein Dussel!!!
    Danke 🙂 es klappt jetzt sogar 🙂 🙂 🙂

    David



  • kleine hilfe fuer den anfang (aber wirklich nur fuer den anfang):
    schreib es doch so, dann bekommst du gleich fehlermeldungen, wenn das "==" falsch ist:

    if (75 == star)
    


  • HI, könntest du deinen ganzen code veröffentlichen?
    Würde gern sehen wie es aussieht.
    Danke.



  • #include <conio.h>
    #include <stdio.h>
    
    void main (void)
    {
    int posx,posy,stern,star; posy=10; posx=10; stern=220; star=75; clrscr();
    
    textbackground(RED);
    clrscr();
    
    window(3,2,23,70);
    textbackground(9);
    textcolor(4);
    clrscr();
    
    printf("  Das Programm hier bringt nichts! Mit + und - kannst du den Asciicode „ndern!");
    
    do{
    
    	star=getch();
    	if (star==43){stern++;}
    	if (star==45){stern--;}
    	gotoxy(77,23);
    	printf("%i",stern);
    
    	if (star==75){
    	//clrscr();
    	posx--;
    	gotoxy(posx,posy);
    	if (posx<1){posx=80;}
    	printf("%c",stern);}
    
    	if (star==80){
    	//clrscr();
    	posy++;
    	gotoxy(posx,posy);
    	if (posy>25){posy=1;}
    	printf("%c",stern);}
    
    	if (star==77){
    	//clrscr();
    	posx++;
    	gotoxy(posx,posy);
    	if (posx>80){posx=1;}
    	printf("%c",stern);}
    
    	if (star==72){
    	//clrscr();
    	posy--;
    	gotoxy(posx,posy);
    	if (posy<3){posy=25;}
    	printf("%c",stern);}}
    
    	while(star<20000);
    	getch();}
    


  • c.rackwitz schrieb:

    kleine hilfe fuer den anfang (aber wirklich nur fuer den anfang):
    schreib es doch so, dann bekommst du gleich fehlermeldungen, wenn das "==" falsch ist:

    if (75 == star)
    

    Davon rate ich ab, weil es nicht das ist was der Programmierer
    eigentlich sagen will. Wr will nicht wissen ob 75 den Wert
    von star hat sondern ob star den Wert von 75 hat. Es ist immer
    nervig sich in diese Logik einzudenken wenn man den Programmfluß
    verstehen will/muss und einen Zuweisungsfehler meckert jeder
    Compiler sowieso gleich als warning an. Sonst lässt man lint darüber
    laufen und der merkt das sofort.



  • > Davon rate ich ab,
    ich auch

    > einen Zuweisungsfehler meckert jeder Compiler sowieso gleich als warning an
    echt? zuweisungen sind doch nichts boeses, wenn man sie in bedingungen verwendet. ich weiss ja nicht, welchen compiler du bevorzugst, wuerde mich aber interessieren.



  • das ist doch ein windows-rogramm?



  • was willst du damit sagen, maximo?



  • Der GCC (Version ab 3.irgendwas schätze ich) sagt bei ner Zuweisung im if "Warning: Suggest using parentheses around assignment in condition"



  • Kann mir einer die einzelnen funktionen erklären?(z.B. dass das programm erkennt, dass die pfeiltaste gedrückt wird...)



  • schau mal in die FAQ - die Steuertasten werden als zwei ASCII-Zeichen dargestellt und z.B. die nach-links Taste entspricht 0/75, kann also durch die Abfrage "if(star==75)..." abgefangen werden (das 0 wird ignoriert).



  • c.rackwitz schrieb:

    > Davon rate ich ab,
    ich auch

    > einen Zuweisungsfehler meckert jeder Compiler sowieso gleich als warning an
    echt? zuweisungen sind doch nichts boeses, wenn man sie in bedingungen verwendet. ich weiss ja nicht, welchen compiler du bevorzugst, wuerde mich aber interessieren.

    Nein, so meinte ich das nicht. Ich meinte, das Visual C++ einen Warning
    wirft wenn es auf eine vermutlich falsche Zuweisung stößt "if (var=2)"
    und dies bei sinnvollen Zuweisungen "if ((p_file=fopen ("a", "br")) == NULL)"
    nicht tut.


Anmelden zum Antworten