[C++] Deftige console gui in Ansi C++

Pagina: 1
Acties:

  • Robain
  • Registratie: September 2006
  • Laatst online: 01-12 12:12
Hallo,


Ik moet een project maken in Ansi C++ dit jaar. Het moet dus een soort bibliotheek administratie programma zijn.

Nu, dit gaat allemaal zeer goed, al bij al is de opgave eigenlijk vrij simpel... Omdat ik mij een beetje zou willen differentieren van de andere projecten zou ik er dus een aantal extra dingen willen aan toevoegen.

In de specificatie staan dat we een textbase console GUI moeten gebruiken. Voor praktisch alle projecten komt dit neer op alle opties naar stdout sturen, en dan de gebruiker een keuze laten maken door bvb een nummertje in te voeren.

Nu vind ik dit enorm primitief... Daarom dacht ik eraan om een GUI te maken waarin de gebruiker gewoon met op en neer pijltjestoetsen iets kan selecteren en dan op enter ramt om de optie te selecteren die momenteel gehighlight is. Beetje zoals het menutje dat je krijgt wanneer je tijdens een windows boot op F8 blijt hameren...


Ik heb hier al een search uitgevoerd, alsook op google gezocht, maar heb nog niet echt iets gevonden.

Ik zou dit dus in ansi c++ moeten kunnen doen. Is dit uberhaubt wel mogelijk??


Greetz

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:52

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nee, de ISO C++ library voldoet niet in de consolefuncties die jij wilt hebben. Je zult libraries moeten gebruiken - die van het OS of 3rd party cross-platform

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Robain
  • Registratie: September 2006
  • Laatst online: 01-12 12:12
Nu ik erover na denk is dit toch vrij simpel zelf te maken?

Je print je gui uit en kleurt bvb de eerste optie rood, de andere gewoon wit. Als de gebruiker op een pijltje naar beneden duwt (dit gaat toch met Ansi C++ hé?) doe je een clearscreen en print je opnieuw de volledige gui uit met de tweede optie rood.

De gui bevat maar een max 5 opties, dus zou dit toch snel genoeg moeten kunnen gebeuren? Of niet??


Enkel voor dat rood kleuren zou ik dan buiten de std library gaan, maar mss mag dit wel nog...

EDIT : dit zou je dan kunnen vermijden door bijvoorbeeld hoofdletters te gebruiken voor een geselecteerde optie, en kleine voor een niet geselecteerde... Of 3 sterretjes voor de geselecteerde optie, mogelijkheden legio...


Greetz

[ Voor 18% gewijzigd door Robain op 21-11-2006 12:36 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:52

.oisyn

Moderator Devschuur®

Demotivational Speaker

Robain schreef op dinsdag 21 november 2006 @ 12:29:
en kleurt bvb de eerste optie rood, de andere gewoon wit.
Kan niet met ANSI C++
Als de gebruiker op een pijltje naar beneden duwt (dit gaat toch met Ansi C++ hé?)
Kan niet met ANSI C++
doe je een clearscreen
Kan niet met ANSI C++
dus zou dit toch snel genoeg moeten kunnen gebeuren?
Je maakt je zorgen om snelheid :? Het is een text-scherm GUI, hoe langzaam denk jij dat dat gaat dan? :)

[ Voor 23% gewijzigd door .oisyn op 21-11-2006 12:33 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Robain
  • Registratie: September 2006
  • Laatst online: 01-12 12:12
Crap :D

Die clearscreen en kleurtjes kunnen nog omzeild worden met enige creativiteit, maar gewoon een pijltjestoets opvangen is toch wel een minimum.


Wat betreft snelheid, ik bedoelde daarmee gewoon of die clrscreen e.d. snel genoeg kan gebeuren zodat het echt lijkt alsof de selectie gewoon naar beneden gegaan is...


Wat is ISO C++ primitief :(


Greetz, en merci .oisyn voor de info!

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 27-11 13:24
Het lijkt me toch redelijk zinloos om zoiets platform-specifieks in de C++ standaard op te nemen... Vooral omdat het niks met C++ te maken heeft.

Verwijderd

ncurses.

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

..is geen ANSI C++

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

je kan de geselecteerde optie laten inspringen mbv tabs oid.

ASSUME makes an ASS out of U and ME


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14:58
Luister naar deze man: ;)
.oisyn schreef op dinsdag 21 november 2006 @ 02:22:
Nee, de ISO C++ library voldoet niet in de consolefuncties die jij wilt hebben. Je zult libraries moeten gebruiken - die van het OS of 3rd party cross-platform


Voor een grafisch-achtige UI in een terminal is curses of ncurses wel geschikt, en op de meeste UNIX-systemen standaard aanwezig (maar ook beschikbaar voor Windows). Zie bijvoorbeeld: http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/
Het is wel een C library, dus misschien niet ideaal als je C++-achtig wil programmeren.

  • Toolmaker
  • Registratie: April 2004
  • Laatst online: 09-06 16:59
Ik weet niet of het toegestaan is(In je opdracht of de EULA of NCurses), maar je kunt ncurses ook compileren naar een static library.

Dan kun je tijdens compile-time linken naar ncurses, waardoor je applicatie WEL voldoet aan ANSI C++, en je toch vrolijk gebruikt kun maken van ncurses.

Afhankelijk van je OS kun je eventueel zelf de library schrijven die kleuren, clearscreen, etc. doet, maar als je ANSI C++ moet programmeren, vermoed ik dat het doel cross-platform is(en je docent waarschijnlijk op een of andere exotisch OS gaat compileren).

Toolmaker

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Hoe je het linkt maakt niet uit: ncurses is geen onderdeel van ANSI (ISO) C++. Als je inderdaad alleen ISO C++ mag gebruiken, dan is dat een probleem.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Toolmaker
  • Registratie: April 2004
  • Laatst online: 09-06 16:59
MSalters schreef op maandag 27 november 2006 @ 19:52:
Hoe je het linkt maakt niet uit: ncurses is geen onderdeel van ANSI (ISO) C++. Als je inderdaad alleen ISO C++ mag gebruiken, dan is dat een probleem.
Op zich niet. Ongeacht of je ANSI C++ gebruikt om een library te bouwen, eenmaal een static library, doet het er niet zo veel toe of deze library voldoet aan de ANSI standaard, het is toch allemaal object code. Probleem is natuurlijk wel dat je moet compileren met dezelfde compiler als dat je je eigen project compileert, want de kans dat static libraries cross-compiler zijn is nul(Ik ben het nog niet tegengekomen in ieder geval);

Maar dit ligt dus uiteraard aan hoe je docent tegenover het gebruik van 3rd party libraries staat, en of je deze pre-compiled maar aanleveren. Als dat het geval is, is er geen probleem.

Toolmaker
Pagina: 1