微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使基于 python 龟的游戏在点击时重置

如何解决使基于 python 龟的游戏在点击时重置

我正在尝试让我的游戏在用户点击屏幕后重新启动。我已经尝试将整个过程包装在一个 while 循环中,但这给了我关于未定义变量的错误

我也试过将代码包装在一个函数中,但这也会给我带来变量错误

这是代码

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

apply plugin:'kotlin-parcelize'

android {
    compileSdk 30

    defaultConfig {
        applicationId "com.example.quitanda"
        minSdk 21
        targetSdk 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary true
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinoptions {
        jvmTarget = '1.8'
    }
    buildFeatures {
        compose true
    }
    compoSEOptions {
        kotlinCompilerExtensionVersion compose_version
    }
}

dependencies {
    def appcompat_version = "1.3.0"

    implementation 'androidx.hilt:hilt-navigation-compose:1.0.0-alpha02'

    implementation 'androidx.core:core-ktx:1.6.0'
    implementation "androidx.compose.ui:ui:$compose_version"
    implementation "androidx.compose.material:material:$compose_version"
    implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
    implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
    implementation 'androidx.activity:activity-compose:1.3.0-rc01'

    implementation "androidx.appcompat:appcompat:$appcompat_version"
    // For loading and tinting drawables on older versions of the platform
    implementation "androidx.appcompat:appcompat-resources:$appcompat_version"

    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
    debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"


   // implementation "com.google.accompanist:accompanist-coil:0.7.1"
    implementation "io.coil-kt:coil-compose:1.3.0"
    implementation "androidx.navigation:navigation-compose:2.4.0-alpha05"
    implementation "com.google.accompanist:accompanist-swiperefresh:0.8.0"
    implementation "com.google.accompanist:accompanist-pager:0.8.1"

    implementation "com.squareup.retrofit2:retrofit:2.9.0"
    implementation "com.squareup.retrofit2:converter-moshi:2.9.0"
    implementation "androidx.paging:paging-compose:1.0.0-alpha08"
}

我使用 pygame 只是为了将音乐添加到我的游戏中。

import turtle
import math
import random
import pygame

pygame.init()
pygame.mixer.init()

# MUSIC AND SOUND SETUP
pygame.mixer.music.load("Sounds/music.mp3")
pygame.mixer.music.play(loops=-1)

这是主循环,大部分代码都放在这里了。

bubblefiredsound = pygame.mixer.sound("Sounds/bubblefired.mp3")
enemyhitsound = pygame.mixer.sound("Sounds/enemyhit.mp3")

# SCREEN SETUP
screen = turtle.Screen()
screen.bgcolor("black")
screen.title("Space Invaders")
screen.bgpic("TurtleInvadersBackground.png")

# CUSTOM SHAPES
turtle.register_shape("Enemy.gif")
turtle.register_shape("Turtle.gif")
turtle.register_shape("Bubble.gif")

# BORDERS
border_pen = turtle.Turtle()
border_pen.speed(0)
border_pen.color("white")
border_pen.penup()
border_pen.setposition(-300,-300)
border_pen.pendown()
border_pen.pensize(3)
for side in range(4):
    border_pen.fd(600)
    border_pen.lt(90)
border_pen.hideturtle()

# score
score = 0

score_pen = turtle.Turtle()
score_pen.speed(0)
score_pen.color("white")
score_pen.penup()
score_pen.setposition(-290,270)
scorestring = "score: %s" % score
score_pen.write(scorestring,False,align="left",font=("Bubble3D",20,"normal"))
score_pen.hideturtle()

# MAIN TURTLE
MajorTom = turtle.Turtle()
MajorTom.color("blue")
MajorTom.shape("Turtle.gif")
MajorTom.penup()
MajorTom.speed(0)
MajorTom.setposition(0,-250)
MajorTom.setheading(90)

playerspeed = 0

# NUMBER OF ENEMIES
number_of_enemies = 5
# PLACEHOLDER FOR ENEMIES
enemies = []

# ADD ENEMIES TO THE PLACEHOLDER
for i in range(number_of_enemies):
    # CREATE ENEMIES
    enemies.append(turtle.Turtle())

for enemy in enemies:
    enemy.color("red")
    enemy.shape("Enemy.gif")
    enemy.penup()
    enemy.speed(0)
    x = random.randint(-200,200)
    y = random.randint(100,250)
    enemy.setposition(x,y)

enemyspeed = 5

# CREATE THE PROJECTILE BUBBLE
bubble = turtle.Turtle()
bubble.color("blue")
bubble.shape("Bubble.gif")
bubble.penup()
bubble.speed(0)
bubble.setheading(90)
bubble.hideturtle()
bubble.setpos(0,-300)

bubblespeed = 20

# BUBBLE STATE,READY = READY TO FIRE,FIRE = FIRING
bubblestate = "ready"


# MOVEMENT (LEFT AND RIGHT)
def move_left():
    global playerspeed
    playerspeed = -7

def move_right():
    global playerspeed
    playerspeed = 7

def stop_player():
    global playerspeed
    playerspeed = 0

def fire_bubble():
    global bubblestate
    if bubblestate == "ready":
        bubblestate = "fire"
        # MOVE BUBBLE TO MAJOR TOM
        x = MajorTom.xcor()
        y = MajorTom.ycor() + 10
        bubble.setposition(x,y)
        bubble.showturtle()
    if bubblestate == "fire":
        bubblefiredsound.play()


def CollisionDetection(t1,t2):
    distance = math.sqrt(math.pow(t1.xcor() - t2.xcor(),2) + math.pow(t1.ycor() - t2.ycor(),2))
    if distance < 32:
        return True
    else:
        return False


# KEYBINDINGS
screen.listen()
screen.onkeypress(move_left,"a")
screen.onkeypress(move_right,"d")
screen.onkeyrelease(stop_player,"a")
screen.onkeyrelease(stop_player,"d")
screen.onkey(fire_bubble,"space")

解决方法

您正在寻找 turtle.onscreenclick 函数。
当点击屏幕时,使用鼠标当前的 x 和 y 坐标调用此函数。

def reset(x_pos,y_pos):
    # reset the game

turtle.onscreenclick(reset)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。