圖靈/幫助
歡迎來到圖靈幫助臺。有問題嗎?請隨時在此提出,有人會盡快嘗試回答您的問題。
- 圖靈在哪些情況下真正有效?什麼時候我應該選擇圖靈而不是華夏公益教科書:程式語言書架上其他語言,例如程式設計: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