Console / Editor
Übersicht

FlorianBetreff: Console / Editor |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Type PrintType Field X Field Y Field ScreenSizeX Field ScreenSizeY Field SizeX Field SizeY Field CursorX Field CursorY Field Font Field FontSizeX Field FontSizeY Field Color Field Text Field Red Field Green Field Blue End Type Type PageType Field ID Field X Field Y Field SizeX Field SizeY Field CursorX Field CursorY Field Color Field Text Field ViewTextOn Field ViewTextX1 Field ViewTextX2 Field ViewTextY1 Field ViewTextY2 End Type Global PrintObject.PrintType Global PageObject.PageType Graphics 800,600,0,2 SetBuffer BackBuffer() SetFont LoadFont("Courier",16) Create_Page 0,0,90,38 Create_PrintObject 0,0,40,30 Setcolor 255,25,20 SuperBox Locate 3,3 Print "Dies ist nur ein Test." Print "Test" Setcolor 255,25,200 Print "Test2" ;load_Page "Page.bin" save_PageTxt "Page.txt" Viewtexton Viewtext 1,1,48,28 Repeat Key = GetKey () If Key Select Key Case 13 : PrintLineFeed Case 27 : Exit Case 1 : PrintPos1 Case 2 : PrintEnde Case 4 : Del Case 8 : PrintBackSpace Case 28 : PrintUp Case 29 : PrintDown Case 31 : PrintLeft Case 30 : PrintRight Default If Key>31 Then Inskey key EndIf End Select EndIf Draw_Page Forever End Function Del() End Function Function PrintBackSpace() If PageObject\ViewTextOn=True Then Else EndIf End Function Function ViewTextOn() Pageobject\ViewTextOn=True End Function Function ViewTextOff() Pageobject\ViewTextOn=False End Function Function GetViewText() Return Pageobject\ViewTextOn End Function Function ViewText(X1,Y1,X2,Y2) PageObject\ViewTextX1=X1 PageObject\ViewTextY1=Y1 PageObject\ViewTextX2=X2 PageObject\ViewTextY2=Y2 End Function Function SetViewTextX1(X1) PageObject\ViewTextX1=X1 End Function Function SetViewTextY1(Y1) PageObject\ViewTextY1=Y1 End Function Function SetViewTextX2(X2) PageObject\ViewTextX2=X2 End Function Function SetViewTextY2(Y2) PageObject\ViewTextY2=Y2 End Function Function GetViewTextX1(X1) Return PageObject\ViewTextX1 End Function Function GetViewTextY1(Y1) Return PageObject\ViewTextY1 End Function Function GetViewTextX2(X2) Return PageObject\ViewTextX2 End Function Function GetViewTextY2(Y2) Return PageObject\ViewTextY2 End Function Function InsKey(Key) rgb=PrintObject\Red*$10000 + PrintObject\Green*$100 +PrintObject\Blue PokeByte PageObject\Text ,Pageobject\CursorX+PageObject\SizeX*Pageobject\CursorY,Key PokeInt PageObject\Color,(Pageobject\CursorX+PageObject\SizeX*Pageobject\CursorY)*4,rgb If PageObject\ViewTextOn=True Then If PageObject\ViewTextX1+PageObject\ViewTextX2-2>PageObject\CursorX Then PageObject\CursorX=PageObject\CursorX+1 Else If PageObject\ViewTextY1+PageObject\ViewTextY2>PageObject\CursorY+2 Then PageObject\CursorY=PageObject\CursorY+1 PageObject\CursorX=PageObject\ViewTextX1 EndIf EndIf Else If PageObject\CursorX+2<PageObject\SizeX Then PageObject\CursorX=PageObject\CursorX+1 Else If PageObject\CursorY+2<PageObject\SizeY Then PageObject\CursorY=PageObject\CursorY+1 PageObject\CursorX=0 EndIf EndIf EndIf End Function Function Draw_Page() Cls For X=0 To Pageobject\SizeX-1 For Y=0 To Pageobject\SizeY-1 Char=Getchar(X,Y) Color 0,0, PeekInt(PageObject\Color,(X+PageObject\SizeX*Y)*4) If Char>31 Then If Char=32 Then ; Rect PrintObject\FontSizeX*X,PrintObject\FontSizeY*Y,PrintObject\FontSizeX,PrintObject\FontSizeY Else Text PrintObject\FontSizeX*X,PrintObject\FontSizeY*Y,Chr$(Char) EndIf EndIf Next Next Color 255,255,255 Text PrintObject\FontSizeX*PageObject\CursorX,PrintObject\FontSizeY*PageObject\CursorY,"_" Flip End Function Function PrintPos1() If Pageobject\Viewtexton=True Then PageObject\CursorX= PageObject\ViewTextX1 Else PageObject\CursorX=0 EndIf End Function Function PrintEnde() If Pageobject\Viewtexton=True Then PageObject\CursorX= PageObject\ViewTextX1+PageObject\ViewTextX2-2 Else PageObject\CursorX=PageObject\SizeX-2 EndIf End Function Function PrintRight() If Pageobject\Viewtexton=True Then If PageObject\ViewTextX1+PageObject\ViewTextX2-2>PageObject\CursorX Then PageObject\CursorX=PageObject\CursorX+1 EndIf Else If PageObject\CursorX+2<PageObject\SizeX Then PageObject\CursorX=PageObject\CursorX+1 EndIf EndIf End Function Function PrintLeft() If Pageobject\Viewtexton=True Then If PageObject\ViewTextX1<PageObject\CursorX Then PageObject\CursorX=PageObject\CursorX-1 EndIf Else If PageObject\CursorX>0 Then PageObject\CursorX=PageObject\CursorX-1 EndIf EndIf End Function Function PrintUp() If Pageobject\Viewtexton=True Then If PageObject\CursorY>PageObject\ViewTextY1 Then PageObject\CursorY=PageObject\CursorY-1 EndIf Else If PageObject\CursorY>0 Then PageObject\CursorY=PageObject\CursorY-1 EndIf EndIf End Function Function PrintDown() If Pageobject\Viewtexton=True Then If PageObject\ViewTextY1+PageObject\ViewTextY2>PageObject\CursorY+2 Then PageObject\CursorY=PageObject\CursorY+1 EndIf Else If PageObject\CursorY+2<PageObject\SizeY Then PageObject\CursorY=PageObject\CursorY+1 EndIf EndIf End Function Function PrintHome () If Pageobject\Viewtexton=True Then PrintObject\CursorX = PageObject\ViewTextY2 PrintObject\CursorY = PageObject\ViewTextY1 Else PrintObject\CursorX = 0 PrintObject\CursorY = 0 EndIf End Function Function PrintLineFeed() If Pageobject\Viewtexton=True Then If PageObject\ViewTextY1+PageObject\ViewTextY2>PageObject\CursorY+2 Then PageObject\CursorY=PageObject\CursorY+1 PageObject\CursorX=PageObject\ViewTextY1 EndIf Else If PageObject\CursorY+2<PageObject\SizeY Then PageObject\CursorY=PageObject\CursorY+1 PageObject\CursorX=0 EndIf EndIf End Function Function Create_PrintObject(X,Y,SizeX,SizeY) PrintObject=New PrintType PrintObject\X=X PrintObject\Y=Y PrintObject\SizeX=SizeX PrintObject\SizeY=SizeY PrintObject\FontSizeX = FontWidth() PrintObject\FontSizeY = FontHeight() PrintObject\ScreenSizeX = SizeX*PrintObject\FontSizeX PrintObject\ScreenSizeY = SizeY*PrintObject\FontSizeY End Function Function GetPage() Return PageObject\ID End Function Function SetPage(ID) For PageObject=Each PageType If PageObject\ID=ID Then Return True EndIf Next Return False End Function Function SuperBox() MakeBox 0,0,Pageobject\SizeX-1, Pageobject\SizeY-1 End Function Function MakeBox(X,Y,X2,Y2) Locate X,Y Printline "+"+String$("-",X2-2)+"+" For Zeile=2 To Y2-1 Locate X,Y+Zeile-1 Printline "|"+String$(" ",X2-2)+"|" Next Locate X,Y+Y2-1 Printline "+"+String$("-",X2-2)+"+" End Function Function DeletePage(ID) For PageObject=Each PageType If PageObject\ID=ID Then Delete PageObject Return True EndIf Next Return False End Function Function Save_PageTxt(File$) FileNr=WriteFile(File$) If FileNr=0 Then Return False Zeilen=PageObject\SizeY For ZeilenNr=0 To Zeilen-1 WriteLine FileNr,Getline$(ZeilenNr) Next CloseFile FileNr Return True End Function Function Save_Page(File$) FileNr=WriteFile(File$) If FileNr=0 Then Return False WriteInt FileNr,Pageobject\X WriteInt FileNr,Pageobject\Y WriteInt FileNr,Pageobject\SizeX WriteInt FileNr,Pageobject\SizeY WriteByte FileNr,Pageobject\ViewTextOn WriteInt FileNr,Pageobject\ViewTextX1 WriteInt FileNr,Pageobject\ViewTextY1 WriteInt FileNr,Pageobject\ViewTextX2 WriteInt FileNr,Pageobject\ViewTextY2 WriteInt FileNr,Pageobject\CursorX WriteInt FileNr,Pageobject\CursorY WriteBytes Pageobject\Text, FileNr , 0, Pageobject\SizeX*Pageobject\SizeY WriteBytes Pageobject\Color, FileNr, 0, Pageobject\SizeX*Pageobject\SizeY*4 CloseFile FileNr Return True End Function Function Load_Page(File$) FileNr=ReadFile(File$) If FileNr=0 Then Return False PageObject=New PageType PageObject\ID =Handle(PageObject) Pageobject\X =ReadInt(FileNr) Pageobject\Y =ReadInt(FileNr) Pageobject\SizeX =ReadInt(FileNr) Pageobject\SizeY =ReadInt(FileNr) Pageobject\ViewTexton=ReadByte(FileNr) Pageobject\ViewTextX1=ReadInt(FileNr) Pageobject\ViewTextY1=ReadInt(FileNr) Pageobject\ViewTextX2=ReadInt(FileNr) Pageobject\ViewTextY2=ReadInt(FileNr) Pageobject\CursorX=ReadInt(FileNr) Pageobject\CursorY=ReadInt(FileNr) PageObject\Color=CreateBank(Pageobject\SizeX*Pageobject\SizeY*4) PageObject\Text =CreateBank(Pageobject\SizeX*Pageobject\SizeY) ReadBytes Pageobject\Text, FileNr, 0, Pageobject\SizeX*Pageobject\SizeY ReadBytes Pageobject\Color, FileNr, 0, Pageobject\SizeX*Pageobject\SizeY*4 Return PageObject\ID End Function Function Printline(Line$) rgb=PrintObject\Red*$10000 + PrintObject\Green*$100 +PrintObject\Blue LineNr=PageObject\CursorY Lang=Len(Line$) For P=0 To PageObject\SizeX If P>=Lang Then PokeByte PageObject\Text,Pageobject\CursorX+P+PageObject\SizeX*LineNr,0 Else PokeByte PageObject\Text ,Pageobject\CursorX+P+PageObject\SizeX*LineNr,Asc(Mid$(Line$,P+1,1)) PokeInt PageObject\Color,(Pageobject\CursorX+P+PageObject\SizeX*LineNr)*4,rgb EndIf Next PageObject\CursorY=PageObject\CursorY+1 End Function Function Print(Line$) rgb=PrintObject\Red*$10000 + PrintObject\Green*$100 +PrintObject\Blue LineNr=PageObject\CursorY Lang=Len(Line$) For P=0 To PageObject\SizeX If P>=Lang Then Else PokeByte PageObject\Text ,Pageobject\CursorX+P+PageObject\SizeX*LineNr,Asc(Mid$(Line$,P+1,1)) PokeInt PageObject\Color,(Pageobject\CursorX+P+PageObject\SizeX*LineNr)*4,rgb EndIf Next PageObject\CursorY=PageObject\CursorY+1 End Function Function ReadColor(X,Y) rgb= PeekInt(PageObject\Color,(X+PageObject\SizeX*Y)*4) PrintObject\Red=(rgb And $FF000000)/$1000000 PrintObject\Green=(rgb And $FF0000)/$10000 PrintObject\Blue=(rgb And $FF00)/$100 End Function Function WirteColor(X,Y) PokeInt PageObject\Color,(X+PageObject\SizeX*Y)*4,PrintObject\Red*$10000 + PrintObject\Green*$100 +PrintObject\Blue End Function Function Create_Page(X,Y,SizeX,SizeY) PageObject=New PageType PageObject\ID =Handle(PageObject) PageObject\X =X PageObject\Y =Y PageObject\SizeX=SizeX PageObject\SizeY=SizeY PageObject\Color=CreateBank(SizeX*SizeY*4) PageObject\Text =CreateBank(SizeX*SizeY) Return PageObject\ID End Function Function Locate(CursorX,CursorY) PageObject\CursorX=CursorX PageObject\CursorY=CursorY End Function Function GetLine2$(lineNr) For P=0 To PageObject\SizeX Char=PeekByte(PageObject\Text,P+PageObject\SizeX*LineNr) If Char<32 Then Char=32 S$=S$+Chr$(Char) Next Return S$ End Function Function GetLine$(LineNr) For P=0 To PageObject\SizeX Char=PeekByte(PageObject\Text,P+PageObject\SizeX*LineNr) If Char=0 Then Return S$ S$=S$+Chr$(Char) Next Return S$ End Function Function SetLine(LineNr,Line$) Lang=Len(Line$) For P=0 To PageObject\SizeX If P>=Lang Then PokeByte PageObject\Text,P+PageObject\SizeX*LineNr,0 Else PokeByte PageObject\Text,P+PageObject\SizeX*LineNr,Asc(Mid$(Line$,P+1,1)) EndIf Next End Function Function SetLine2(LineNr,Line$) Lang=Len(Line$) For P=0 To PageObject\SizeX If P>=Lang Then PokeByte PageObject\Text,P+PageObject\SizeX*LineNr,32 Else PokeByte PageObject\Text,P+PageObject\SizeX*LineNr,Asc(Mid$(Line$,P+1,1)) EndIf Next End Function Function SetChar(X,Y,Char) PokeByte PageObject\Text,X+PageObject\SizeX*Y,Char End Function Function GetChar(X,Y) Return PeekByte(PageObject\Text,X+PageObject\SizeX*Y) End Function Function GetCursorX() Return PrintObject\CursorX End Function Function GetCursorY() Return PrintObject\CursorY End Function Function SetCursorX(CursorX) PrintObject\CursorX=CursorX End Function Function SetCursorY(CursorY) PrintObject\CursorY=CursorY End Function Function SetCursor(X,Y) PrintObject\CursorX=X PrintObject\CursorX=Y End Function Function Setcolor(Red,Green,Blue) PrintObject\Red =Red PrintObject\Green=Green PrintObject\Blue =Blue End Function Function SetRed(Red) PrintObject\Red=Red End Function Function GetRed() Return PrintObject\Red End Function Function SetGreen(Green) PrintObject\Green=Green End Function Function GetGreen() Return PrintObject\Green End Function Function SetBlue(Blue) PrintObject\Blue =Blue End Function Function GetBlue() Return PrintObject\Blue End Function Function GetColor() Return PrintObject\Red*$10000 + PrintObject\Green*$100 +PrintObject\Blue End Function |
||
Das große BlitzBasic Community Tutorial
Stackmaschine 2.0 |
- Zuletzt bearbeitet von Florian am Sa, Mai 13, 2006 21:23, insgesamt einmal bearbeitet
Florian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Befehle:
Code: [AUSKLAPPEN] Strg + Pos1 Strg + Ende Pfeiltaste nach oben Pfeiltaste nach unten Bild nach oben Bild nach unten Backspace ESC Code: [AUSKLAPPEN] Dim FarbenR(15) Dim FarbenG(15) Dim FarbenB(15) FarbenR( 0)= 0:FarbenG( 0)= 0:FarbenB( 0)= 0 FarbenR( 1)= 0:FarbenG( 1)= 0:FarbenB( 1)=128 FarbenR( 2)= 0:FarbenG( 2)=128:FarbenB( 2)= 0 FarbenR( 3)= 0:FarbenG( 3)=128:FarbenB( 3)=128 FarbenR( 4)=128:FarbenG( 4)= 0:FarbenB( 4)= 0 FarbenR( 5)=128:FarbenG( 5)= 0:FarbenB( 5)=128 FarbenR( 6)=128:FarbenG( 6)=128:FarbenB( 6)= 0 FarbenR( 7)=192:FarbenG( 7)=192:FarbenB( 7)=192 FarbenR( 8)= 92:FarbenG( 8)= 92:FarbenB( 8)= 92 FarbenR( 9)= 0:FarbenG( 9)= 0:FarbenB( 9)=255 FarbenR(10)= 0:FarbenG(10)=255:FarbenB(10)= 0 FarbenR(11)= 0:FarbenG(11)=255:FarbenB(11)=255 FarbenR(12)=255:FarbenG(12)= 0:FarbenB(12)= 0 FarbenR(13)=255:FarbenG(13)= 0:FarbenB(13)=255 FarbenR(14)=255:FarbenG(14)=255:FarbenB(14)= 0 FarbenR(15)=255:FarbenG(15)=255:FarbenB(15)=255 Global Schrifthoch Global SchriftBreit Global Schrift Global ZeileBreit=60 Global PosAnzeigeZeile=2 Global PosZeile Global PosEditZeile Global MaxEingabeZeilen Global MaxZeilen Global ZeilenNrBreit Global Graphics_X=800 Global Graphics_Y=600 Global Timer=CreateTimer(20) Graphics 800,600,32,2 SetBuffer BackBuffer() Schrift=LoadFont("Courier",24) SetFont Schrift Schrifthoch=FontHeight() SchriftBreit=FontWidth() Dim Txt$(MaxZeilen) Edit_Neu Edit Function Edit_Neu() PosAnzeigeZeile =2 PosZeile =1 PosEditZeile =1 MaxEingabeZeilen=28 ZeilenNrBreit =4 MaxZeilen =2000 Dim Txt(MaxZeilen) End Function Function Edit_Load(File$) PosZeile=1 PosEditZeile=1 Dim Txt(MaxZeilen) FileNr=ReadFile(File$) If FileNr=0 Then Return False While Not(Eof(FileNr)) ZeilenNr=ZeilenNr+1 Zeile$=ReadLine$(FileNr) Txt(ZeilenNr)=Zeile$ Wend CloseFile FileNr Return True End Function Function Edit_Save(File$) FileNr=WriteFile(File$) If FileNr=0 Then Return False For ZeilenZahl=MaxZeilen To 1 Step -1 If Len(Txt$(ZeilenZahl))<>0 Then Exit EndIf Next For ZeilenNr=1 To ZeilenZahl WriteLine FileNr,Txt$(ZeilenNr) Next CloseFile FileNr Return True End Function Function Edit() Update=True Repeat If KeyDown(29)=True Or KeyDown(157)=True Then Strg=True Else Strg=False EndIf If KeyDown(199)=True Then Pos1=True Else Pos1=False EndIf If KeyDown(207)=True Then Ende=True Else Ende=False EndIf If KeyHit(208)=True Then;Pfeiltaste nach unten If PosEditZeile<MaxEingabeZeilen Then update=True PosEditZeile=PosEditZeile+1 ElseIf PosZeile<MaxZeilen-MaxEingabeZeilen+1 Then update=True PosZeile=PosZeile+1 EndIf ElseIf KeyHit(200)=True Then;Pfeiltaste nach oben If PosEditZeile>1 Then update=True PosEditZeile=PosEditZeile-1 ElseIf PosZeile>1 Then update=True PosZeile=PosZeile-1 EndIf ElseIf KeyHit(201)=True Then;Bild nach oben If PosEditZeile<>1 Then update=True PosEditZeile=1 ElseIf PosZeile>MaxEingabeZeilen Then update=True PosZeile=PosZeile-MaxEingabeZeilen ElseIf PosZeile>1 update=True PosZeile=1 EndIf ElseIf KeyHit(209)=True Then;Bild nach unten If PosEditZeile<>MaxEingabeZeilen Then update=True PosEditZeile=MaxEingabeZeilen ElseIf PosZeile+MaxEingabeZeilen*2<MaxZeilen Then update=True PosZeile=PosZeile+MaxEingabeZeilen ElseIf PosZeile<>MaxZeilen-MaxEingabeZeilen+1 Then update=True PosZeile=MaxZeilen-MaxEingabeZeilen+1 EndIf ElseIf KeyHit(1)=True Then;ESC End ElseIf KeyHit(14)=True Then;Backspace If Len(Txt$(PosZeile+PosEditZeile-1))>0 Then update=True Txt$(PosZeile+PosEditZeile-1)=Left$(Txt$(PosZeile+PosEditZeile-1),Len(Txt$(PosZeile+PosEditZeile-1))-1) EndIf ElseIf Strg=True And Pos1=True Then If PosEditZeile<>1 Or PosZeile<>1 Then update=True PosEditZeile=1 PosZeile=1 EndIf ElseIf Ende=True And Strg=True Then For ZeilenZahl=MaxZeilen To 1 Step -1 If Len(Txt$(ZeilenZahl))<>0 Then Exit EndIf Next update=True If ZeilenZahl-MaxEingabeZeilen+1<1 Then PosEditZeile=ZeilenZahl+1 PosZeile=1 Else PosZeile=ZeilenZahl-MaxEingabeZeilen+1 PosEditZeile=MaxEingabeZeilen EndIf Else Taste=GetKey() If Taste>31 Then update=True Txt$(PosZeile+PosEditZeile-1)=Txt$(PosZeile+PosEditZeile-1)+Chr$(Taste) EndIf EndIf If update=True Then Update=False Edit_Draw Flip EndIf WaitTimer Timer Forever End Function Function Edit_Draw() ClsColor 192,192,192 Cls SetFarbe 7 Rect 0,0,SchriftBreit*ZeilenNrBreit,Graphics_Y SetFarbe 8 For ZeilenNr=1 To MaxEingabeZeilen Text 0, Schrifthoch*(PosAnzeigeZeile+ZeilenNr-2),Str$(ZeilenNr+PosZeile-1) Next SetFarbe 1 Rect SchriftBreit*ZeilenNrBreit,(PosAnzeigeZeile-1)*Schrifthoch,SchriftBreit*ZeileBreit,MaxEingabeZeilen*Schrifthoch SetFarbe 9 Rect SchriftBreit*ZeilenNrBreit,(PosAnzeigeZeile+PosEditZeile-2)*Schrifthoch,SchriftBreit*ZeileBreit,Schrifthoch SetFarbe 14 For ZeilenNr=1 To MaxEingabeZeilen Text SchriftBreit*ZeilenNrBreit,Schrifthoch*(PosAnzeigeZeile+ZeilenNr-2),Txt$(ZeilenNr+PosZeile-1) Next SetFarbe 14 Text SchriftBreit*(ZeilenNrBreit+Len(Txt$(PosZeile+PosEditZeile-1))),Schrifthoch*(PosAnzeigeZeile+PosEditZeile-2),"_" End Function Function SetFarbe(Farbe) Color FarbenR(Farbe),FarbenG(Farbe),FarbenB(Farbe) End Function |
||
Das große BlitzBasic Community Tutorial
Stackmaschine 2.0 |
- Zuletzt bearbeitet von Florian am Sa, Mai 13, 2006 22:23, insgesamt einmal bearbeitet
![]() |
Hellfront |
![]() Antworten mit Zitat ![]() |
---|---|---|
Könntest du uns vllt noch aufklären, was das eigetnlich soll? | ||
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
'Qualitätsoffensive' von Triton hat Folgendes geschrieben: weiterhin sollte es zu jedem Code eine treffende Beschreibung geben. D.h wie es funktioniert und was man damit machen kann. Screenshots sind auch nicht unerwünscht.
|
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group