NCurses implementierung
Übersicht

![]() |
BtbNBetreff: NCurses implementierung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hinweis: Nicht für Windows
Link: http://btbn.de/files/ncurses.tar.bz2 NCurses ist eine C-Library, mit der man auf der Konsole zeichnen und Tastaturabfragen machen kann. Das meiste ist zwar schon implementiert, aber ich konnte nicht jede Funktion einzeln überprüfen, deshalb freue ich mich über jeden gefundenen Fehler und werde versuchen, ihn schnellstmöglich zu berichtigen. Das OOP-Modul soll dazu dienen, die Lib einfacher benutzen zu können und nichtmehr mit Pointern hantieren zu müssen, dieses ist allerdings noch sehr unfertig und nur gerade lauffähig. Hier 2 Beispiele für die Benutzung: Ein Beispiel für das OOP-Modul. Erstellt ein Fenster, welches man mit den Pfeiltasten bewegen kann: Code: [AUSKLAPPEN] SuperStrict
Framework BtbN.NCursesOOP Global app:TNCurses = New TNCurses Global win:TNCWindow = app.NewWindow(2,2,15,5) win.Box() Local ch:Int Repeat ch = app.GetChar() Select ch Case NC_KEY_UP win.Move(win.GetX(),win.GetY()-1) Case NC_KEY_DOWN win.Move(win.GetX(),win.GetY()+1) Case NC_KEY_LEFT win.Move(win.GetX()-1,win.GetY()) Case NC_KEY_RIGHT win.Move(win.GetX()+1,win.GetY()) EndSelect win.Print("Beispiel",2,2) app.Refresh() Until ch = Asc("q") app.Destroy() End Ein Sinuskurven-Beispiel von bigmichi, mit Num+ und Num- kann man die Anzahl veändern: Code: [AUSKLAPPEN] Import BtbN.NCurses
SeedRnd MilliSecs() Global mainwnd:Byte Ptr = nc_initscr() nc_curs_set(0) nc_noecho() nc_cbreak() nc_start_color() nc_clear() 'nc_init_pair(0, 0, 0); 'nc_init_color(1,55,10,10) nc_init_pair(1, 1, 0) nc_init_pair(2, 2, 0) nc_init_pair(3, 3, 0) nc_init_pair(4, 4, 0) nc_init_pair(5, 5, 0) nc_init_pair(6, 6, 0) nc_init_pair(7, 7, 0) nc_init_pair(8, 8, 0) nc_init_pair(9, 9, 0) nc_refresh() nc_nodelay(mainwnd,True) Local T:Int = MilliSecs() Local AR:Byte=0, ER:Byte = 5 While AR < ER If T+100 < MilliSecs() Then TCurve.Add() T = MilliSecs() AR:+1 End If Wend Local FPSTimer = CreateTimer(10) Local doloop:Byte = 1,current_getch:Int Local Pause:Byte = False While doloop WaitTimer(FPSTimer) current_getch = nc_getch() If current_getch = 113 Then doloop = 0 If current_getch = 32 Then Pause = Not Pause If current_getch = 43 Then TCurve.Add() If current_getch = 45 Then TCurve.CL.removefirst() If Not Pause Then nc_clear() TCurve.UpdateALL() End If 'nc_mvaddstr(1, 1, string(current_getch)) 'nc_mvaddstr(2, 1, string(nc_Lines)) 'nc_mvaddstr(2, 4, string(nc_Cols)) nc_refresh() Wend nc_endwin() End Type TCurve Global CL:TList = New TList Field Sins:TList = New TList Field StartWinkel:Short Field Winkel:Float Field EndWinkel:Short Field Aktiv:Byte = False Field Color:Byte Function Add:TCurve() Local TC:TCurve = New TCurve TC.StartWinkel = Rand(0,360) TC.Winkel = TC.StartWinkel TC.EndWinkel = TC.Winkel TC.Color = Rand(1,7) CL.AddLast(TC) Return TC End Function Function UpdateAll() For Local TC:TCurve = EachIn CL TC.Update() Next End Function Method Update() If Aktiv Then Sins.removefirst() Local TS:TSin = New TSin TS.Winkel = Winkel +7 TS.S = Int( Sin(TS.winkel)*((nc_Lines)/2.0)) Winkel = TS.Winkel Sins.ADDLAST(TS) Draw() End Method Method Draw() nc_color_set(Color, Null) Local MZ:Float = 0 For Local TS:TSin = EachIn Sins nc_mvaddstr(((nc_Lines)/2.0)+TS.S, MZ, "#") nc_mvaddstr(((nc_Lines)/2.0)+TS.S, MZ+1, "#") 'nc_color_set(2, Null) 'nc_mvaddstr(5, 1, string(color)) MZ:+2 Next If MZ > nc_Cols Then Aktiv = True Else Aktiv = False End Method End Type Type TSin Field Winkel:Short Field S:Int Method Draw() nc_mvaddstr(10+S, 11, String(S)) End Method End Type Wer sich etwas in NCurses einlesen möchte, hier ein Tutorial: http://web.cs.mun.ca/~rod/ncurses/ncurses.html (en) |
||
phiker |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Tolles Modul, wenn ich jetzt noch ein Beispiel mit nem farbigen Menü kriege, bin ich vollends zufrieden ![]() |
||
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Inwiefern nicht für Windows?
könnte man das Modul nocheinmal heraufladen? |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Modul befindet sich noch in meinem git repo: http://git.oromit.de/gitweb/gi...git;a=tree
Ich wünsche dir viel spass beim Versuch, ncurses unter Windows zu verwenden. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group