Backspacing in my (text editor?)
| Author |
Message |
MagicIdiot

|
Posted: Tue Jun 22, 2010 8:11 am Post subject: Backspacing in my (text editor?) |
|
|
What is it you are trying to achieve?
Well grade 11 is over and I'll be quite bored over the summer. So i decided to make a program to test how fast you can type.
What is the problem you are having?
When you have multiple rows of text, trying to go back to a previous row with backspace is my problem. I can't seem to get the x coordinate right. The way I'm determining x right now only works if I have a max of 2 rows of text. I need a new method to get x.
Describe what you have tried to solve this problem
Change the way i get X. The only way I can think of is to have an array that holds the width(px) on each row. But I don't know how many rows there will be. It can be a waste of space. But if thats the only way..
Post any relevant code (You may choose to attach the file instead of posting the code if it is too long)
| Turing: |
% Ricky
View.Set ("graphics:650;650")
% For the location of next letter and the starting/ending x
var x, y, startX, endX : int := 0
% Font size
var fontSize : int := 20
% The font
var font : int := Font.New ("arial:" + intstr (fontSize ))
% The entered character and word
var key : string (1) := ""
var sentence : string := ""
% Extra spacing between the numbers. Varies depending on font size
var spacing : int := fontSize div 4
startX := 30
endX := 500
x := startX
y := 550
loop
% This does the cursor blink
if Time.Elapsed div 500 mod 2 = 0 then
Draw.Line (x, y - 3, x, y + fontSize + 3, 7)
elsif Time.Elapsed div 500 mod 2 = 1 then
Draw.Line (x, y - 3, x, y + fontSize + 3, 0)
end if
if hasch = true then
getch (key )
if key = KEY_BACKSPACE and sentence not= "" then
% Erases cursor blinker
Draw.Line (x, y - 3, x, y + fontSize + 3, 0)
% Check if it needs to go back to previous row
if x - (Font.Width (sentence (length (sentence )), font ) + spacing ) < startX - 1 then
% ---------------------------------- Here -----------------------------------------------------------
x := (spacing * (length (sentence ))) + startX + (Font.Width (sentence (1 .. length (sentence )), font ))
% ---------------------------------------------------------------------------------------------------
y + = 50
end if
% Sets the coordinates
x - = Font.Width (sentence (length (sentence )), font ) + spacing
% Draws the fillbox to erase the letter
Draw.FillBox (x - (fontSize div 5), y - (fontSize div 3), x + Font.Width (sentence (length (sentence )), font ) + 1, y + fontSize, 0)
% sentence = sentence - 1 character
sentence := sentence (1 .. length (sentence ) - 1)
elsif key not= KEY_BACKSPACE then
% Erases cursor blinker
Draw.Line (x, y - 3, x, y + fontSize + 3, 0)
% Check if it needs to go to next row
if x + Font.Width (key, font ) > endX + 1 then
x := startX
y - = 50
end if
% Print the key
Draw.Text (key, x, y, font, 7)
% sentence = sentence + key
sentence + = key
% Sets new coords
x + = Font.Width (key, font ) + spacing
end if
exit when key = KEY_ENTER or length (sentence ) >= 255
end if
end loop
put sentence
|
Please specify what version of Turing you are using
4.1 |
|
|
|
|
 |
Sponsor Sponsor

|
|
 |
copthesaint

|
Posted: Tue Jun 22, 2010 9:19 am Post subject: RE:Backspacing in my (text editor?) |
|
|
| I belive BackSpace is chr (7). Try that, if it doesnt work, try 8,9,10. Those couple are space enter and backspace however I forget the order. |
|
|
|
|
 |
DemonWasp
|
Posted: Tue Jun 22, 2010 9:49 am Post subject: RE:Backspacing in my (text editor?) |
|
|
If seems like you want a flexible array. That kind of array lets you resize it at runtime as needed with the new keyword.
Alternately, look for "collections" under the Turing Submissions section and you'll find a few implementations of Lists, which are what you actually want. |
|
|
|
|
 |
MagicIdiot

|
Posted: Tue Jun 22, 2010 11:07 am Post subject: Re: Backspacing in my (text editor?) |
|
|
| The flexible array seems to work. I didn't know about it. Thanks. |
|
|
|
|
 |
|
|