You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Love2D开发AI对战Pong游戏时无法绘制图形求助

问题描述

我正在用Love2D和Lua开发一款与AI对战的Pong游戏,但无法在屏幕上绘制矩形和圆形。尝试了多种方法并参考过往项目,仍未找到问题所在。接触Love2D和Lua编程仅数月,大概率忽略了某些明显细节,希望有人帮忙排查。相关代码如下:

Main.lua

push = require "Helpers/push"
Class = require "Helpers/class"
require "Objects/AI"
require "Objects/Ball"
require "Objects/Paddle"

dimWidth = 960
dimHeight = 540

resWidth = 480
resHeight = 270

love.window.setTitle("Pong with artificial intelligence")

function love.load()
    love.graphics.setDefaultFilter("nearest", "nearest")

    Font = love.graphics.newFont("Font/font.ttf")
    love.graphics.setFont(Font)

    push:setupScreen(resWidth, resHeight, dimWidth, dimHeight, {
        fullscreen = false,
        resizable = false,
        vsync = true
    })

    Ball:init()
end
function love.update(dt)

end
function love.keypressed(key)

end
function love.draw()
    push:start()
    
    Ball:render()
    push:finish()
end

Ball.lua

Ball = Class{}

function Ball:init()
    self.x = 800
    self.y = 450
    self.width = 8
    self.height = 8
end

function Ball:update(dt)
end

function Ball:render()
    love.graphics.circle("fill", self.x, self.y, self.width, self.height)
end
问题排查与解决

这里有三个核心问题导致图形无法显示:

  1. 类实例化错误
    直接调用Ball:init()是错误的,用Class库创建的类需要先实例化对象,再调用方法。:init()是实例方法,直接通过类调用时self指向的是Ball类本身,而非具体实例。
    修改love.load()中的代码:
-- 替换原来的Ball:init()
ball = Ball()

同时在love.draw()中调用实例的render方法:

ball:render()
  1. 坐标超出虚拟屏幕范围
    你的push虚拟分辨率是480x270,但Ball的初始坐标设为(800,450),远大于虚拟屏幕的宽高,导致图形在屏幕外无法显示。调整Ball的初始坐标到屏幕可见区域:
function Ball:init()
    self.x = resWidth / 2  -- 屏幕水平中心
    self.y = resHeight / 2 -- 屏幕垂直中心
    self.radius = 8        -- 用radius代替width/height,更贴合圆形属性
end
  1. love.graphics.circle参数错误
    love.graphics.circle的参数格式是mode, x, y, radius, segments,你把第四个参数传成了height,这会导致分段数逻辑异常。修改render方法:
function Ball:render()
    -- segments可选,不传的话Love2D会自动计算合适值
    love.graphics.circle("fill", self.x, self.y, self.radius)
end

把这些修改后,就能正常显示圆形了。如果后续Paddle也有类似问题,参照这个逻辑排查:确保实例化对象、坐标在屏幕范围内、绘图函数参数正确。

内容的提问来源于stack exchange,提问作者Someone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 04:01:15