2017-06-19 140 views
0

我有一個遊戲,我嘗試做,但是當我創建我的屏幕和我的烏龜時,我的烏龜出現在與我製作的屏幕不同的屏幕上。 如果我要運行代碼,它將彈出2個不同的烏龜屏幕A:我稱爲屏幕的屏幕,B:當您創建一個沒有屏幕的烏龜時會自動彈出的屏幕。如何將烏龜設置爲龜屏

import turtle 
from turtle import * 
from turtle import Screen 
import tkinter 
from tkinter import * 
import time 
from time import sleep 
from random import randint 
import random 
health = 50 
damage = 10 
root = Tk() 
Fight = randint(10,20) 
step = 0 
cv = ScrolledCanvas(root,600,600,600,600) 
cv.pack(side = tkinter.LEFT) 
turtle = Turtle() 
screen = TurtleScreen(cv) 
turtle.up() 
def Up(event): 

    global step 
    if step == Fight: 
     Combat() 
    step+=1 
    turtle.seth(90) 
    turtle.forward(10) 
def Down(event): 
    global step 
    if step == Fight: 
     Combat() 
    step+=1 
    turtle.seth(-90) 
    turtle.forward(10) 
def Left(event): 
    global step 
    if step == Fight: 
     Combat() 
    step+=1 
    turtle.seth(180) 
    turtle.forward(10) 
def Right(event): 
    global step 
    if step == Fight: 
     Combat() 
    step+=1 
    turtle.seth(0) 
    turtle.forward(10) 
def Combat(): 
    Enemy = Turtle() 
    Enemy.up() 
    EHealth = randint(20,100) 
    EDamage = randint(10,20) 



screen.onkey(forward, "Up") 
screen.onkey(backward, "Down") 
screen.onkey(left, "Left") 
screen.onkey(right, "Right") 
screen.listen() 

謝謝

回答

0

Python的龜被設計成既可以嵌入在自己製造的Tk的窗口或它的Tk的窗口的決策。這兩種選擇的調用方式不同,但通過混合最終的命令和兩者。以你啓動自定義Tk的窗口方法:

from random import randint 
from tkinter import * 
from turtle import ScrolledCanvas, RawTurtle, TurtleScreen 

health = 50 
damage = 10 
fight = randint(10, 20) 
step = 0 

def up(): 
    global step 

    if step == fight: 
     combat() 
    step += 1 
    turtle.seth(90) 
    turtle.forward(10) 

def down(): 
    global step 

    if step == fight: 
     combat() 
    step += 1 
    turtle.seth(-90) 
    turtle.forward(10) 

def left(): 
    global step 

    if step == fight: 
     combat() 
    step += 1 
    turtle.seth(180) 
    turtle.forward(10) 

def right(): 
    global step 

    if step == fight: 
     combat() 
    step += 1 
    turtle.seth(0) 
    turtle.forward(10) 

def combat(): 
    enemy = RawTurtle(canvas) 
    enemy.up() 
    eHealth = randint(20, 100) 
    eDamage = randint(10, 20) 

root = Tk() 
canvas = ScrolledCanvas(root) 
canvas.pack(side=LEFT) 
screen = TurtleScreen(canvas) 
turtle = RawTurtle(canvas) 
turtle.up() 

screen.onkey(up, "Up") 
screen.onkey(down, "Down") 
screen.onkey(left, "Left") 
screen.onkey(right, "Right") 
screen.listen() 

screen.mainloop() 

或者,我們可以通過讓龜模塊創建窗口簡化事情有點,但通過其方法需要,我們可以塑造它調用:

from random import randint 
from turtle import Turtle, Screen 

health = 50 
damage = 10 
fight = randint(10, 20) 
step = 0 

def up(): 
    global step 

    if step == fight: 
     combat() 
    step += 1 
    turtle.seth(90) 
    turtle.forward(10) 

def down(): 
    global step 

    if step == fight: 
     combat() 
    step += 1 
    turtle.seth(-90) 
    turtle.forward(10) 

def left(): 
    global step 

    if step == fight: 
     combat() 
    step += 1 
    turtle.seth(180) 
    turtle.forward(10) 

def right(): 
    global step 

    if step == fight: 
     combat() 
    step += 1 
    turtle.seth(0) 
    turtle.forward(10) 

def combat(): 
    enemy = Turtle() 
    enemy.up() 
    eHealth = randint(20, 100) 
    eDamage = randint(10, 20) 

screen = Screen() 
screen.setup(500, 350) # visible portion of screen area 
screen.screensize(600, 600) # scrollable extent of screen area 
turtle = Turtle() 
turtle.up() 

screen.onkey(up, "Up") 
screen.onkey(down, "Down") 
screen.onkey(left, "Left") 
screen.onkey(right, "Right") 
screen.listen() 

screen.mainloop() 

您在使用import時應該更加謹慎,因爲導入相同模塊的兩種不同方式最終會混淆你和/或Python。