图灵/帮助
欢迎来到图灵帮助台。有问题吗?请随时在此提出,有人会尽快尝试回答您的问题。
- 图灵在哪些情况下真正有效?什么时候我应该选择图灵而不是维基教科书:编程语言书架上其他语言,例如编程:QBasic、编程:Prolog或Python 编程?
- 谁使用图灵?
- 是否有用图灵编写的重大程序?
- 图灵可以在我的电脑上运行吗?
- 图灵可以在我的[[嵌入式系统/PIC 上运行吗?
- 如何在计算机上安装图灵编译器/解释器/IDE?
i0 := --DavidCary 00:20, 4 October 2005 (UTC)
- 嗨,David。抱歉回复晚了。#sorrynotsorry 图灵主要用作学习工具,并且是为此而设计的。由于它是为了易用性而不是速度或多功能性而设计的,因此您使用图灵的唯一原因可能是用于简单的程序,或者您只是开始学习编程。
- 主要是高中生
- 据我所知,没有。
- 是的,图灵在 Windows 上运行。它还在 Linux 和 Mac 上运行。
- 如果你能在上面安装 Linux 的话 ;)
- 我不知道,但我也不确定。
- 您需要从 holtsoft 购买一份副本。如果您是学生,并且您的学校/董事会购买了许可证,您可以免费获得一份副本。
- 在 Windows 上,安装非常简单。我不经常使用它,而且有一段时间没用过它了,所以我不确定在其他系统上安装它是否有任何重要说明。
为什么不传递参数是不好的编程风格?如果在不传递参数的情况下有效,为什么不使用全局变量?
- 原因可能因程序而异。最常见的原因之一是,您的过程/函数最终可能会被包含在库中,使用您程序的人希望直接将参数传递给它,而不是弄清楚所有需要的变量。-Frazzydee|✍ 04:23, 24 May 2005 (UTC)
所以,我需要将值增加零,然后增加一,然后减一,增加二,减二,增加三,减三……我不知道该怎么做。我一直在尝试使用一些关于
loop counter:=counter+1 a:=a+(-1)**counter end loop
但是它只是在做 a+0, a-1, a+1, a-1, a+1 而不是 a+0, a-1, a+1, a-2, a+2 求助!
它是这样做的 a+0, a-1, a+1, a-1, a+1 因为 -1**1=-1, -1**2=+1, -1**3=-1, -1**4=+1...等等。请尝试
var y : int var z : int for x:1..10 y:=x z:=x put "a+", y put "a-", z end for
如何减缓程序将信息输出(放置)到屏幕上的速度?请帮忙!紧急!
答案
- 使用delay(n),其中 n 是您希望程序暂停的毫秒数。例如
delay(1000)
将使程序暂停一秒钟,然后再执行下一行。-Frazzydee|✍ 22:53, 6 Jun 2005 (UTC)
有没有办法在特定条件下跳过一行
例如
如果 x=2 “现在我需要计算机避免第 32 行到第 45 行的数据”
- 在大多数情况下,您只需将它存储在这些行中的临时变量中
var tmp : string if x=2 then for i : 1 .. 14 get : inp, tmp end for end if
我上十年级,我们刚被要求制作一个模拟程序。包含风、重力等变量。无论如何,我过去一周左右一直生病,什么也没做,因为我在家没有图灵。你能给我发送一个模拟高尔夫球击球的程序吗?它必须包含诸如风力、重力、切球和拉球之类的变量,用户可以输入诸如他/她是业余球手还是职业球手之类的信息,从而影响他的/她的击球距离球洞的远近。请你给我发送一个可以做到这一点的程序。我非常需要它。谢谢!
procedure info (var base, height, L1, L2, L3 : int)
put "Please enter the base of the triangle" get base put "Please enter the height of the triangle" get height put "Please enter the 1st length of the triangle" get L1 put "Please enter the 2nd length of the triangle" get L2 put "Please enter the 3rd length of the triangle" get L3
end info
procedure area (var b, h, Area_Triangle : int)
Area_Triangle:=b*h div 2
end area
procedure pmeter (var L1, L2, L3, Perimeter_Triangle : int)
Perimeter_Triangle := L1 + L2 + L3
end pmeter
procedure areapmeter (var finalarea, finalperimeter, Area_Triangle, Perimeter_Triangle : int)
put "The Area of the triangle is", finalarea, "The Perimeter of the triangle is,", finalperimeter finalarea := Area_Triangle finalperimeter := Perimeter_Triangle
end areapmeter
- 您有冗余变量,例如 b 和 base,并且您在 put 之后定义了 finalarea 和 final perimeter。删除冗余变量,您应该没问题
%Declare the variables var base, height, L1, L2, L3, Area_Triangle, Perimeter_Triangle : int %Enter in values put "Please enter the base of the triangle" get base put "Please enter the height of the triangle" get height put "Please enter the 1st length of the triangle" get L1 put "Please enter the 2nd length of the triangle" get L2 put "Please enter the 3rd length of the triangle" get L3 %Display Area_Triangle := base * height div 2 Perimeter_Triangle := L1 + L2 + L3 put "The Area of the triangle is ", Area_Triangle put "The Perimeter of the triangle is ", Perimeter_Triangle
有人能告诉我如何在 Turing 中居中文本吗?
练习
[edit | edit source]如何编写一个程序,允许用户输入任何十进制数,然后将该数字输出为二进制数?
var tmp : int var tmpc : string := "" get tmp loop tmpc += intstr(tmp mod 2) tmp := tmp div 2 exit when tmp=0 end loop put tmpc for decreasing i : length(tmpc) .. 1 put tmpc(i).. end for
字符串
[edit | edit source]输出一个单词并确定中间单词是大写还是小写?
为什么它不输出我输入的单词?!在它被修改之后
[edit | edit source]if choice = 3 then loop put "title" %---use quotations---% put "line" %setting outputs locate (3, 1) put "Enter a pattern:" locate (4, 1) put "Enter a pattern to substitute" put "it with:" locate (6, 1) put "Enter a word to change:" %getting inputs locate (3, 18) get pattA : * locate (5, 10) get pattB : * locate (6, 25) get word : * if index (word, pattA) not= 0 then loop pos := index (word, pattA) exit when pos = 0 beg_word := word (1 .. pos - 1) end_word := word (pos .. *) new_word := beg_word + end_word word := new_word end loop end if cls put title put line locate (7, 1) put word end loop end if
在 Turing 中制作 RPG 游戏
[edit | edit source]在 Turing 中制作 RPG 游戏是否可能?我可以制作一个非常基本的战斗系统,带有 HP 等。但是,我想让它可以升级、使用物品等等。并带有一些武器制造系统。
Turing 是一种极其有限的编程工具/语言,在 Turing 中制作带有升级和武器的 RPG 将非常困难,如果不是不可能的话。这是因为 Turing 主要被用作初学者程序员的学习工具,以向他们展示编程的基本要素,一个更好的编程语言可能是 Java 或 C++,我真的不推荐使用 Turing 来创建像你描述的这样的复杂游戏。
我制作了一个简单的(有等级攻击等)基于文本的 RPG,但很难在我的游戏中制作图形,所以我想要一个复古的外观,如果你喜欢做这类事情,你应该访问这个网站。
http://compsci.ca/v3/index.php?pf=120&h=1&start=0
四子棋
[edit | edit source]我需要帮助编写一个视频四子棋游戏的程序。我刚得了肺炎,已经缺课两周左右了。这个项目很快就要截止了,我对 Turing 不是很擅长。请帮助我,这将不胜感激。非常感谢你。
当然,你可以在 Turing 中制作 RPG 游戏。现在,它不会像最终幻想 X 那样有图形,但你可以轻松地制作出类似于任天堂/超级任天堂时代游戏的作品。
猜数字
[edit | edit source]我需要为学校用 Turing 代码创建猜数字游戏。我完全迷茫和困惑。如果有人有代码,或者只是提供一些帮助,我会非常感谢。谢谢
如何编写一个程序,允许用户点击并让连接到纸质汽车的 LED 灯(连接到实验盒)闪烁
我知道它
[edit | edit source]我做错了什么,我知道它,但我记不起来了?
case label := "a" put "no" label := "b" put "yes" label := "c" put "no" label := "d" put "no" label := "e" put "no" end case
答案
- := 设置变量的值。您应该使用 = 进行比较(例如,比较 label 的值和 "a")。试试看,如果它仍然不起作用,请回来...抱歉,但我现在没有时间自己测试 :( -Frazzydee|✍ 22:58, 2006年2月26日(UTC)
一个带 GUI 的聊天程序
[edit | edit source]我已经完成了 95% 的代码。但我被实际的信息传输难住了!我可以打开连接,并连接,但我没有办法在服务器和客户端之间传递信息!有人可以帮忙吗?
- 您应该可以使用 get 和 put,如果我记得没错。是否有任何理由导致 "get : ns, stringvar" 不起作用?(其中 ns 是您的网络流,stringvar 是一个字符串变量)。如果您仍然遇到问题,请将您的代码发布到某个地方,我会看一看。 -Frazzydee|✍ 23:00, 2006年2月26日(UTC)
嗯,是的,我只是想知道,我理解循环是如何工作的,但我不知道如何让程序循环,以便在用户提示时重新开始,例如。在这种情况下,您让程序运行,然后您到达末尾,您循环它,这样它就会在 word = no 时说退出程序(用户说他们不想再玩了),但如果用户说他们想再玩一次,您如何让它重新开始呢?
链接
[edit | edit source]我正在为学校(十年级 FTW)制作一个 Turing 项目,我必须创建一个欢迎屏幕,在我的所有程序中使用。问题是,我制作了一个非常棒的欢迎屏幕(至少对我们目前所学的来说很不错),但它的代码很长。我不想每次都将它复制到程序的顶部。是否有一行代码可以放在每个程序的顶部,告诉它先运行欢迎屏幕,然后继续执行程序的其余部分?
您可以使用 include。
例如,如果您的欢迎屏幕在名为 welcome.t 的文件中,您需要编写
include "welcome.t"
在每个作业的开头。
不过,请确保 welcome.t 与您的作业在同一个目录中。
太多变量。
[edit | edit source]我正在尝试制作一个数独游戏,它已经变成了一个很长的脚本。是否有办法将变量分组,以简化操作?例如,如果 a1 = {任何变量组},则循环 a1 := a1+1
== 您好,我想知道是否有人可以指导我使用 Turing 4.1.1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
您好,虽然我不会指导您,但您可能会发现查看 Turing 参考中的数组很有帮助。
var sampleArray1: array 1..9,1..9 of int %创建数组
var sampleArray2: array 1..3,1..6 of int: %创建数组并为数组分配值
=init(1,1,1,1,1,1, 1,1,1,1,1,1, 2,2,2,5,6,2)
sampleArray1(1,3):=6 %将整数 6 分配给数组的索引 1,3
希望这对您有所帮助 :)
求助!
[edit | edit source]嘿,有人能告诉我这段代码有什么问题吗?这是一个石头剪刀布游戏的程序。
var p1 : char var p2 : char var exit_char : string (1) var p : char var P : char put "Note: The 'ROCK-PAPER-SCISSORS' game is meant for two (2) players. \nPress any key to continue. \n\n" getch (exit_char) put "Player 1, enter 'p' for paper, 'r' for rock, or 's' for scissors: ".. get p1 put "Player 2, enter 'p' for paper, 'r' for rock, or 's' for scissors: ".. get p2 if ((p1 = "p" or "P") and (p2 = "p" or "P")) then put "\nTie game, nobody wins." elsif ((p1 = "s" or "S") and (p2 = "s" or "S")) then put "\nTie game, nobody wins." elsif ((p1 = "r" or "R") and (p2 = "r" or "R")) then put "\nTie game, nobody wins." elsif ((p1 = "p" or "P") and (p2 = "r" or "R")) then put "\nPlayer 1 wins, paper covers rock." elsif ((p1 = "r" or "R") and (p2 = "s" or "S")) then put "\nPlayer 1 wins, rock breaks scissors." elsif ((p1 = "s" or "S") and (p2 = "p" or "P")) then put "\nPlayer 1 wins, scissor cuts paper." elsif ((p1 = "p" or "P") and (p2 = "s" or "S")) then put "\nPlayer 2 wins, scissor cuts paper." elsif ((p1 = "r" or "R") and (p2 = "p" or "P")) then put "\nPlayer 2 wins, paper covers rock." elsif ((p1 = "s" or "S") and (p2 = "r" or "R")) then put "\nPlayer 2 wins, rock breaks scissors." else put "\nInvalid choice(s). Remember to enter only one letter; 'p', 'r', or 's'." end if
答案
- 您没有正确使用布尔值。将 (p1 = "p" or "P") 重写为 (p1 = "p" or p1 = "P"),因此第一行应该是
if ((p1 = "p" or p1 = "P") and (p2 = "p" or p2 = "P")) then put "\nTie game, nobody wins."
Turing 帮助
[edit | edit source]有人可以幫幫我嗎?我需要製作一個牛仔從懸崖跳到馬背上,然後騎著馬跑掉的場景。我可以製作場景,但我似乎無法讓牛仔跳到馬背上,然後騎著馬跑掉。他們是棍狀人物,在一個棕色的盒子上面。
我有一堆程序,每個程序的開頭我都想放一首帶叉子的音樂。我做到了,但它在程序內部卻不起作用,因為你不能在程序內部放過程。我該怎麼辦?求求你幫幫我!
以下代碼是模擬的猜數字遊戲。這是基本代碼。不幸的是,我在一些字串方面遇到了問題,我已經用*****問題區域****標記了。
var guess1, guess2, guess3, guess4 :string %guesses var ans1 :int :=Rand.Int (97,101) %generation of answer var ans2 :int :=Rand.Int (97,101) var ans3 :int :=Rand.Int (97,101) var ans4 :int :=Rand.Int (97,101) var nouveau_guess :int const ANS :string := chr (ans1)+chr (ans2)+chr (ans3)+chr (ans4) %answer put ANS %instructions put "Pick four of the following five letters: a, b, c or d \n" loop %prompts put "Enter your first guess: ".. get guess1 put "Enter your second guess: ".. get guess2 put "Enter your third guess: ".. get guess3 put "Enter your forth guess: ".. get guess4 var GUESS :string := guess1+guess2+guess3+guess4 %guess %answer completely correct if ANS=GUESS then put "YOU WIN!" exit end if %evaluation of guess (completely correct) for i :1..4 if GUESS (i)=ANS (i) then *****PROBLEM AREA***** i must convert the guess (i) into another character so that it doesn't check it again in the following code put "Correct" end if end for %evaluation of guess (sort of correct) for i :1..4 if GUESS (1) = ANS (i) then put "semi-correct" end if if GUESS (2) = ANS (i) then put "semi-correct" end if if GUESS (3) =ANS (i) then put "semi-correct" end if if GUESS (4)= ANS (i) then put "semi-correct" end if end for end loop
答案
- 我不確定你在問題區域中想做什麼。我的猜測是,你需要將問題區域改成以下內容。
var allRight : boolean := true for i :1..4 if GUESS(i) not= ANS(i) then allRight := false end if end for if allRight the put "Correct" exit end if
我正在做這個作業,我需要移動一個多邊形,但我不知道怎麼做,你能告訴我嗎?非常感謝你!
在製作多邊形之後清除螢幕,然後在它旁邊製作相同的多邊形即可。
它可能與 getch 和跟隨滑鼠程序有關,試著查詢一下,一旦你學會了如何使用 getch,你可能就會想通了。
如何使用 parallelget 函數?根據我的理解,它比 parallelget(64) 更複雜。請詳細解答,因為我正在讀高二。粗體 MOD 和 DIV 是什麼?非常感謝你。parallelget 是一個沒有參數的函數。
procedure PGet(var val, i0, i1, i2, i3, i4: int) val := parallelget i0 := (val div 64) mod 2 i1 := (val div 128) mod 2 i2 := (val div 32) mod 2 i3 := (val div 16) mod 2 i4 := (val div 8) mod 2 end PGet
parallelget 代表一個已經確定的數字,它不需要變數,這就是 parallelget(64) 沒有任何作用的原因。把它像變數一樣使用,例如,"put parallelget"。
是的,我需要製作一個程序,它會要求用戶輸入兩個單詞,然後我按字母順序排列它們。我已經通過簡單地將變數設置為 word1 和 word2 來實現了這一點,然後我只是放入了
if word1 > word2 then put word2,"":2,word1 else put word1,"":2, word2 end if
在我的程序中,我確實包含了 get 語句和變數...但我只是寫下了我按字母順序排列事物的想法。問題是,兩個單詞必須全部是大寫或全部是小寫,我不能讓 word1 大寫,word2 小寫,因為小寫字母比大寫字母大,即使大寫字母以 "Z" 開頭,小寫字母以 "a" 開頭,我的程序仍然會在輸入單詞之後顯示 "Z" 在 "a" 之前。我該怎麼做才能讓它顯示 "a" 在 "Z" 之前?
嗨!
我想知道是否能得到一些關於數字轉換的幫助。
我需要將十進制、十六進制、二進制和八進制相互轉換。
我知道
binary_out := intstr (decimal_in, 0, 2)
將 decimal_in 轉換為 binary_out
以及
for decreasing n : length (binin) .. 1 if binin (n) = '1' then decout := decout + 2 ** (length (binin) - n) end if end for
將數字轉換回十進制
我在二進制到八進制/十六進制、八進制到十進制/二進制/十六進制以及十六進制到十進制/二進制/八進制的轉換方面遇到困難。
請幫幫我!謝謝 ==> 為什麼不先將二進制字串轉換回整數(十進制)呢?然後你可以使用 "intStr(int, 0, <base>) 將其轉換為十六進制或八進制字串?
decNumberOut := strint(binStringIn, 2) octalString := intstr(decNumberOut, 0, 8) hexString := intstr(decNumberOut, 0, 16)
更好的問題: 如何在沒有重力的情況下使用 WASD 或左右上下鍵移動,更具體地說,如何上下移動?沒有網站提供此信息,我快要瘋了。
以下是到目前為止的代碼
Text.ColourBack (green) cls setscreen ("graphics:800;800,offscreenonly,nobuttonbar,title:SPEEDY SNOWMAN") var x, y : int x := 100 y := 100
var keypress : array char of boolean
Text.ColourBack (green) cls
loop Input.KeyDown (keypress)
if keypress (KEY_RIGHT_ARROW) then x := x + 5 end if
if keypress (KEY_LEFT_ARROW) then x := x - 5 end if
drawfilloval (300 + x, 200, 50, 50, white) drawfilloval (300 + x, 260, 40, 40, white) drawfilloval (300 + x, 100, 80, 80, white) drawfilloval (280 + x, 270, 5, 5, black) drawfilloval (320 + x, 270, 5, 5, black) drawfilloval (300 + x, 260, 5, 5, red) drawfilloval (278 + x, 248, 4, 4, black) drawfilloval (286 + x, 240, 4, 4, black) drawfilloval (298 + x, 235, 4, 4, black) drawfilloval (308 + x, 240, 4, 4, black) drawfilloval (318 + x, 248, 4, 4, black) drawfilloval (300 + x, 190, 6, 6, black) drawfilloval (300 + x, 210, 6, 6, black) delay (5) View.Update View.Set ("offscreenonly") cls end loop
- Alexiler