鱼C论坛

 找回密码
 立即注册
查看: 1034|回复: 3

[已解决]求助大佬帮忙写个小的程序或者给个代码思路

[复制链接]
发表于 2018-6-19 22:27:15 | 显示全部楼层 |阅读模式
3鱼币
我想写一个可以画出一个圆形,并且可以有个移动i的小球在圆上移动的代码,但是不知道从何下手,求大佬可以帮忙写一下或者讲一下思路谢谢
最佳答案
2018-6-19 22:27:16
本帖最后由 久疤K 于 2018-6-20 18:38 编辑
  1. #写写伪代码
  2. 初始化大圆圆心及半径
  3. 初始化小圆半径和起始位置(角度表示)
  4. 初始化小圆速度(角速度)
  5. while True:
  6.     # 更新小圆位置
  7.     起始位置 += 速度
  8.     # 将小圆位置和半径转化为直角坐标系表示
  9.     x,y = fun( 大圆圆心, 大圆半径, 小圆位置 )
  10.     # 根据大圆半径和圆心画大圆
  11.     画大圆
  12.     # 根据小圆半径和圆心(x,y)画小圆
  13.     画小圆
  14.     # 如果需要刷新
  15.     刷新
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-19 22:27:16 | 显示全部楼层    本楼为最佳答案   
本帖最后由 久疤K 于 2018-6-20 18:38 编辑
  1. #写写伪代码
  2. 初始化大圆圆心及半径
  3. 初始化小圆半径和起始位置(角度表示)
  4. 初始化小圆速度(角速度)
  5. while True:
  6.     # 更新小圆位置
  7.     起始位置 += 速度
  8.     # 将小圆位置和半径转化为直角坐标系表示
  9.     x,y = fun( 大圆圆心, 大圆半径, 小圆位置 )
  10.     # 根据大圆半径和圆心画大圆
  11.     画大圆
  12.     # 根据小圆半径和圆心(x,y)画小圆
  13.     画小圆
  14.     # 如果需要刷新
  15.     刷新
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-20 12:19:42 | 显示全部楼层
这是一个弹球游戏,你改一下就能用了 X D
import random
import time
from tkinter import *

class Ball:
    def __init__(self, canvas, paddle, color):
        self.canvas = canvas
        self.paddle = paddle
        self.id = canvas.create_oval(10, 10, 25, 25, fill=color)
        self.canvas.move(self.id, 245, 100)
        starts = [-3, -2, -1, 1, 2, 3]
        random.shuffle(starts)
        self.x = starts[0]
        self.y = -3
        self.canvas_height = self.canvas.winfo_height()
        self.canvas_width = self.canvas.winfo_width()
        self.hit_bottom = False

    def hit_paddle(self, pos):
        paddle_pos = self.canvas.coords(self.paddle.id)
        if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]:  #
            if pos[3] >= paddle_pos[1] and pos[3] <= paddle_pos[3]:
                return True
        return False

    def draw(self):
        self.canvas.move(self.id, self.x, self.y)
        pos = self.canvas.coords(self.id)
        if pos[1] <= 0:
            self.y = 3
        if pos[3] >= self.canvas_height:
            self.hit_bottom = True
        if self.hit_paddle(pos) == True:
            self.y = -3
        if pos[0] <= 0:
            self.x = 3
        if pos[2] >= self.canvas_width:
            self.x = -3


class Paddle:
    def __init__(self, canvas, color):
        self.canvas = canvas
        self.id = canvas.create_rectangle(0, 0, 100, 10, fill=color)
        self.canvas.move(self.id, 200, 300)
        self.x = 0
        self.canvas_width = self.canvas.winfo_width()
        self.canvas.bind_all('<KeyPress-Left>', self.turn_left)
        self.canvas.bind_all('<KeyPress-Right>', self.turn_right)

    def draw(self):
        self.canvas.move(self.id, self.x, 0)
        pos = self.canvas.coords(self.id)
        if pos[0] <= 0:
            self.x = 0
        elif pos[2] >= self.canvas_width:
            self.x = 0

    def turn_left(self, evt):
        self.x = -5

    def turn_right(self, evt):
        self.x = 5



tk = Tk()
tk.title('Your mind')
tk.resizable(0, 0)
tk.wm_attributes('-topmost', 1)
canvas = Canvas(tk, width=500, height=400, bd=0, highlightthickness=0)
canvas.pack()
tk.update()

paddle = Paddle(canvas, "blue")
ball = Ball(canvas, paddle, 'yellow')

while True:
    if ball.hit_bottom == False:
        ball.draw()
        paddle.draw()
        tk.update_idletasks()
        tk.update()
        time.sleep(0.01)
    elif ball.hit_bottom == True:
        canvas.create_text(200, 100,text='你真恶心',font=('隶书', 22))
        tk.update()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-20 19:06:32 | 显示全部楼层
Pygame,rcos。rsin很简单
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 20:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表