![]() |
C/C ++ Programm
@All - Ein Programmieranfänger ist verwirrt aber glücklich!
Hi Leute, schauts Euch mal den (Teil)Source an: #include <stdio.h> #include <conio.h> int main () { char c; bool weiter = true; clrscr(); while( weiter ) { gotoxy (20,2); printf ("1.) Addieren"); gotoxy (20,4); printf ("2.) Subtrahieren"); gotoxy (20,6); printf ("3.) Multiplizieren"); gotoxy (20,8); printf ("4.) Dividieren"); while( !kbhit() ) { } c = getch(); weiter = !((c == '1') || (c == '1') || (c == '2')|| (c == '2') || (c == '3') || (c == '3') || (c == '4') || (c == '4')); } clrscr(); return 0; } Ist es normal, dass unter DOS dort ein Mousecursor angezeigt wird (mit Code von oben), den man bewegen kann? Dann ist es doch dort anscheinend auch möglich den Mousecursor dort mit Funktionen auszustatten, das wenn man auf zB Multiplizieren drückt dort eine Funktion aufgerufen wird oder geht dies schon zu sehr in die objektorientierte über? Bitte helft mir weiter ich brauche Antworten für die Schule! Mit freundlichen Grüßen Coolbininet |
wenn du mit dem mauscursor explizit arbeiten willst musst du mit grafikprogrammierung beginnen
mit deinem programm hat es sicher nichts zu tun, dass hier eine maus zu sehen ist. verlass dich auf die tastatur um diene programme zu steuern, das erspart dir die MFC's die allerdings für einen anfänger (speziell im bereich objectorientierung) sicher sehr verwirrend sind - aber übung macht den meister ... eine frage hab ich noch, warum fragst du jedes zeichen 2x ab? (in der while-schleife) |
Antwort
@it00x30
Hat eigentlich nur den tieferen Sinn, da ich das Programm von einem Bekannnten habe und das a bisserl umänderte (vorher wurden klein und Großbuchstaben abgerufen) und somit ich nicht so viel Arbeit hatte (Löscharbeit hatte) habe ich einfach nur die Buchstaben ersetzt. Mit freundlichen Grüßen Coolbininet P.S.: kann ich bei dieser Vorgehensweise auch ohne eine Fallunterscheidung (Case-Anweisung, zB mit goto-sprungmarken) den Programmablauf verändern? In die Art, dass ich mit der Sprungmarke nach dem ich zB die Eins Abgefragt habe zur Sprungmarke L80 ein Beispiel gerechnet wird zum Addieren? |
Re: Antwort
Zitat:
Gewöhn dir erst garnicht an in Spagetticode (so nennt man code mit Gotos und sprungmarken) zu programmieren. Man kann alles ganz schön mit case, if, und prozeduren lösen. Und jeder halbwegs gute programmierer wird dir abraten gotos zu verwenden. ps: möglich währe es.... lg |
@COOLBININET wennst in c/c++ mit sprungmarkn arbeiten willst, dann verzieh dich bitte ins emedia forum, danke :D
|
Kann ebenfalls nur von GoTo-Anweisungen abraten. Programmiere am Großrechner und PC und vermeide immer solche Sprunglabels, da oft dadurch falsche Zuweisungen oder Variableninhalte auftreten
|
also,
um die maus zu verwenden muss man nicht umbeding grafik programmieren! hab auch schon einige programme geschrieben ohne grafikprogrammierung. ich werde heut noch in meinen unterlagen kramen und den code für die mausansteuerung posten! GOTO's in C?! oh mein gott, bitte nicht! das is das schlechteste was man machen kann! wenn du sagst du brauchst es für die schule wird der lehrer sehr unglücklich sein damit! bis später dann, mfg, patrick! |
du meinst man kann mit der maus menüs führen, ohne ein fixes fenster zu haben. wie soll das gehen in der konsole, da weiss man ja nie wo im konsolenfenster man steht (scroll, ...)
aber ich lasse mich gern eines besseren belehren |
Festellung
@Tubetraxxx-rOOm4
Hi, wollte dich nur fragen, obst schon den Code posten kannst? Mit freundlichen Grüßen Coolbininet |
aber das gotoxy(x,y) im code und goto haben gar nichts miteinander zu tun.
|
eh nicht!
goto is ne sprungmarke und gotoxy(x,y) ist zum positionieren des cursors am bildschirm um so das bildschirmlayout besser zu gestalten können! mfg, tubetraxxx... |
das is mal der code für die diversen mausfunktionen....
is halt die maussteuerung im textmodus...der cursor ist im prinzip ein BLOCK (so wie _setcursortype(_SOLID); ) bei diversen fragen fragt einfach ganz ungeniert...;)) union REGS outregs; //global für Testauswertung wird benötigt! void posmaus(int x, int y) { REGS reg; reg.x.ax=4; reg.x.cx=x*8-1; reg.x.dx=y*8-1; int86(0x33,®,®); } int mousecheck() //schaut ob maus existiert und #der tasten { union REGS inregs; inregs.x.ax = 0; int86(0x33,&inregs,&outregs); return(outregs.x.ax ? outregs.x.bx : 0); } void mousecursor(int toggle) //schaltet mauscursor ein/aus { union REGS inregs; if(toggle) inregs.x.ax = 1; else inregs.x.ax = 2; int86(0x33,&inregs,&outregs); } int mouserow() //gibt die zeile in der sich die maus { //befindet zurück union REGS inregs; inregs.x.ax = 3; int86(0x33,&inregs,&outregs); return(outregs.x.dx/8+1); } int mousecol() //gibt die spalte in der sich die maus { //befindet zurück union REGS inregs; inregs.x.ax = 3; int86(0x33,&inregs,&outregs); return(outregs.x.cx/8+1); } int mousebuttons() //schaut ob eine maustaste gedrückt { //ist union REGS inregs; inregs.x.ax=6; int86(0x33,&inregs,&outregs); return(outregs.x.ax & 3); } int mouseclick() //schaut ob maustasten gedrückt wurden { int click =0; union REGS inregs; inregs.x.ax = 5; inregs.x.bx = 1; int86(0x33,&inregs,&outregs); click = outregs.x.ax << 1; int86(0x33,&inregs,&outregs); return(click | outregs.x.ax); } void mousestat(unsigned int *button, unsigned int *col, unsigned int *row) { union REGS inregs,outregs; //Gibt die aktuelle Position und struct SREGS segregs; //den Tastenstatus zurück inregs.x.ax=0x33; int86x(0x33,&inregs,&outregs,&segregs); *button=outregs.x.bx; *col=outregs.x.cx; *row=outregs.x.dx; } void mousetcur(char zeichen) { union REGS inregs,outregs; //Funktion um die art struct SREGS segregs; //des mauscorsors zu ändern inregs.x.ax=0x000A; //Möglich sind alle ASCII- inregs.x.bx=0x0000; //Zeichen inregs.x.cx=0x7700; inregs.x.dx=0x7700; inregs.x.dx |= zeichen; int86x(0x33,&inregs,&outregs,&segregs); } void mouseget(unsigned *button, unsigned *col,unsigned *row,unsigned *keystat) { unsigned hbut,hcol,hrow; //hilfsvariablen char taste; *keystat=0; mousestat(&hbut,col,row); //checkt den mausstatus //einmal vorerst und dann while(!hbut && !kbhit()) //so lange keine taste gedrückt { //wird--> mousestat(&hbut,col,row); //checkt den mausstatus } *button=hbut; //merke gedrückte taste while(hbut) //und warte bis die taste { //losgelassen wurde mousestat(&hbut,&hcol,&hrow); } if(kbhit()) //wenn eine taste gedrückt { //(tastatur) taste=getch(); //merke taste *keystat |= 0x0100; //und setze flag if(kbhit()) //check ob weitere taste { taste=getch(); *keystat |= 0x0200; //wenn gedrückt *keystat |= taste; //return taste (neu)... } else *keystat |= taste; //sonst alte... } } sodala....bei diversen fragen steh ich gern zu verfügung... mfg, patrick... |
Zitat:
aber scroolen lässt sich sicherlich programmieren, is eigentlich nicht so tragisch... mfg, patrick... |
einfach mal den alten dos-editor starten und schon hat man ein anschauungsbeispiel. :p
|
jop, hast recht....im dos einfach den edit...dort is ja auch scrolling eingebaut logischwer weise!
oder auch im borland c....kannst ja auch scrollen...;) |
An alle, die gotoxy für einen Sprungbefehl halten:
SCHÄMEN UND 1 STUNDE IN DIE ECKE STELLEN!!! Eigentlich untypisch fürs WCM-Forum, so dass unqualifizierte Kommentare abgegeben werden. Redets lieber von etwas, wo Ihr euch auskennt. :heul: :heul: |
Zitat:
Oder das nächstemal genauer lesen bevor du deinen Kommentar postest. ;) Hinweis: Lies doch mal das PS vom 2. Posting von COOLBININET! lg |
Hi,
na gut, sorry - hab ich wirklich nicht gesehen. *SCHÄM* (aber nur kurz) |
Alle Zeitangaben in WEZ +2. Es ist jetzt 20:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag