python的pygame模拟太阳-地球-月亮-金星等动态示意图代码分析

本文参考原文-http://bjbsair.com/2020-03-25/tech-info/6268/

1.太阳系

2.今天来模拟太阳系的运动的行星,用python3和pygame来制作。

3.第1步:

#---第1步---导出模块---
import pygame
import sys
import math
from pygame.locals import *

4.第2步:

#---第2步---游戏初始化---
pygame.init()

5.第3步:

#---第3步---定义颜色---
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

6.第4步:

#---第4步---定义窗口大小、标题名称、字体设置、创建时钟---
size = width, height = 2200, 1400
screen = pygame.display.set_mode(size)
pygame.display.set_caption("太阳-地球-月亮-金星等示意图")
#字体的初定义,注意英文就这样
myfont=pygame.font.Font(None,60)
#如果是中文,字体hwfs=华文仿宋字体,放在根目录下
#myfont=pygame.font.Font(‘hwfs.ttf‘,60)
#创建时钟对象 (可以控制游戏循环频率)---必须要---
clock = pygame.time.Clock()

=以上4步基本格式固定=

7.第5步:这里有列表定义,多个列表的定义和一行多次赋值,都是python的特点。

#---第5步---初始化相关定义---具体到各个游戏的定义---
#定义三个空列表
‘‘‘
pos_v=[]
pos_e = []
pos_mm = []
‘‘‘
#与上面的作用相同
pos_v=pos_e=pos_mm=[]
#金星、地球和月球等其他行星的公转过的角度
roll_v = roll_e = roll_m = 0
roll_3=roll_4=roll_5=roll_6=roll_7=roll_8=0  

#太阳的位置---相对固定---中心
#知识点:size是一行赋值法,相当于size=(width, height )的元组
#size[0]=width,size[1]=height
position = size[0]//2, size[1]//2

8.第6步:

#---第6步---游戏循环---
while True:
    #---6-1---首先---
    #---pygame的游戏循环必不可少的---个人建议和喜欢---
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
    #背景颜色为黑色
    screen.fill(BLACK)
    #屏幕上显示文字设置
    textImage=myfont.render("Sun=yellow,Earth=blue,Moon=green,Venas=red",True,GREEN)
    #在屏幕坐标为100和100的位置显示
    screen.blit(textImage,(100,100))  

    #---6-2---画太阳sun的大小、位置、颜色设置,60的大小较合适---
    pygame.draw.circle(screen, YELLOW, position, 60, 0)  

    #---6-3---地球=the Earth---
    roll_e += 0.01# 假设地球每帧公转0.01pi
    pos_e_x = int(size[0]//2 + size[1]//6*math.sin(roll_e))
    pos_e_y = int(size[1]//2 + size[1]//6*math.cos(roll_e))
    pygame.draw.circle(screen, BLUE, (pos_e_x, pos_e_y), 15, 0)  

    #---地球的轨迹线---可要可不要---
    pos_e.append((pos_e_x, pos_e_y))
    if len(pos_e) > 255:
        pos_e.pop(0)
    for i in range(len(pos_e)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN, pos_e[i], 1, 0)  

    #---6-4---月球=the Moon---
    roll_m += 0.1# 假设月球每帧公转0.1pi
    pos_m_x = int(pos_e_x + size[1]//20*math.sin(roll_m))
    pos_m_y = int(pos_e_y + size[1]//20*math.cos(roll_m))
    pygame.draw.circle(screen, GREEN, (pos_m_x, pos_m_y), 5, 0)  

    #---月球的轨迹线---可要可不要---
    pos_mm.append((pos_m_x, pos_m_y))
    if len(pos_mm) > 255:
        pos_mm.pop(0)
    for i in range(len(pos_mm)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN ,pos_mm[i], 1, 0)  

    #---6-5---金星=the Venas---
    roll_v += 0.015# 假设金星每帧公转0.015pi
    pos_v_x = int(size[0]//2 + size[1]//3*math.sin(roll_v))
    pos_v_y = int(size[1]//2 + size[1]//3*math.cos(roll_v))
    pygame.draw.circle(screen, RED, (pos_v_x, pos_v_y), 20, 0)  

    #---金星的轨迹线---可要可不要---
    pos_v.append((pos_v_x, pos_v_y))
    if len(pos_v) > 255:
        pos_v.pop(0)
    for i in range(len(pos_v)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, (0,255,0), pos_v[i], 1, 0)  

    #---6-6---其他几个行星---缺点不是椭圆形轨道---
    # 3
    roll_3 += 0.03# 假设金星每帧公转0.03pi
    pos_3_x = int(size[0]//2 + size[1]//3.5*math.sin(roll_3))
    pos_3_y = int(size[1]//2 + size[1]//3.5*math.cos(roll_3))
    pygame.draw.circle(screen, WHITE,(pos_3_x, pos_3_y), 20, 0)  

    # 4
    roll_4 += 0.04# 假设金星每帧公转0.04pi
    pos_4_x = int(size[0]//2 + size[1]//4*math.sin(roll_4))
    pos_4_y = int(size[1]//2 + size[1]//4*math.cos(roll_4))
    pygame.draw.circle(screen, WHITE,(pos_4_x, pos_4_y), 20, 0)  

    # 5
    roll_5 += 0.05# 假设金星每帧公转0.05pi
    pos_5_x = int(size[0]//2 + size[1]//5*math.sin(roll_5))
    pos_5_y = int(size[1]//2 + size[1]//5*math.cos(roll_5))
    pygame.draw.circle(screen, WHITE, (pos_5_x, pos_5_y), 20, 0)
    # 6
    roll_6 += 0.06# 假设金星每帧公转0.06pi
    pos_6_x = int(size[0]//2 + size[1]//2.5*math.sin(roll_6))
    pos_6_y = int(size[1]//2 + size[1]//2.5*math.cos(roll_6))
    pygame.draw.circle(screen, WHITE,(pos_6_x, pos_6_y), 20, 0)  

    # 7
    roll_7 += 0.07# 假设金星每帧公转0.07pi
    pos_7_x = int(size[0]//2 + size[1]//4.5*math.sin(roll_7))
    pos_7_y = int(size[1]//2 + size[1]//4.5*math.cos(roll_7))
    pygame.draw.circle(screen, WHITE, (pos_7_x, pos_7_y), 20, 0)  

    # 8
    roll_8 += 0.08# 假设金星每帧公转0.08pi
    pos_8_x = int(size[0]//2 + size[1]//5.5*math.sin(roll_8))
    pos_8_y = int(size[1]//2 + size[1]//5.5*math.cos(roll_8))
    pygame.draw.circle(screen, WHITE, (pos_8_x, pos_8_y), 20, 0)  

    #刷新
    pygame.display.flip()
    #数值越大刷新越快,小球运动越快
    clock.tick(40)  

9.效果图:

10,适合收藏,慢慢逐行研究pygame的代码。

本文参考原文-http://bjbsair.com/2020-03-25/tech-info/6268/

1.太阳系

2.今天来模拟太阳系的运动的行星,用python3和pygame来制作。

3.第1步:

#---第1步---导出模块---
import pygame
import sys
import math
from pygame.locals import *

4.第2步:

#---第2步---游戏初始化---
pygame.init()

5.第3步:

#---第3步---定义颜色---
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

6.第4步:

#---第4步---定义窗口大小、标题名称、字体设置、创建时钟---
size = width, height = 2200, 1400
screen = pygame.display.set_mode(size)
pygame.display.set_caption("太阳-地球-月亮-金星等示意图")
#字体的初定义,注意英文就这样
myfont=pygame.font.Font(None,60)
#如果是中文,字体hwfs=华文仿宋字体,放在根目录下
#myfont=pygame.font.Font(‘hwfs.ttf‘,60)
#创建时钟对象 (可以控制游戏循环频率)---必须要---
clock = pygame.time.Clock()

=以上4步基本格式固定=

7.第5步:这里有列表定义,多个列表的定义和一行多次赋值,都是python的特点。

#---第5步---初始化相关定义---具体到各个游戏的定义---
#定义三个空列表
‘‘‘
pos_v=[]
pos_e = []
pos_mm = []
‘‘‘
#与上面的作用相同
pos_v=pos_e=pos_mm=[]
#金星、地球和月球等其他行星的公转过的角度
roll_v = roll_e = roll_m = 0
roll_3=roll_4=roll_5=roll_6=roll_7=roll_8=0  

#太阳的位置---相对固定---中心
#知识点:size是一行赋值法,相当于size=(width, height )的元组
#size[0]=width,size[1]=height
position = size[0]//2, size[1]//2

8.第6步:

#---第6步---游戏循环---
while True:
    #---6-1---首先---
    #---pygame的游戏循环必不可少的---个人建议和喜欢---
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
    #背景颜色为黑色
    screen.fill(BLACK)
    #屏幕上显示文字设置
    textImage=myfont.render("Sun=yellow,Earth=blue,Moon=green,Venas=red",True,GREEN)
    #在屏幕坐标为100和100的位置显示
    screen.blit(textImage,(100,100))  

    #---6-2---画太阳sun的大小、位置、颜色设置,60的大小较合适---
    pygame.draw.circle(screen, YELLOW, position, 60, 0)  

    #---6-3---地球=the Earth---
    roll_e += 0.01# 假设地球每帧公转0.01pi
    pos_e_x = int(size[0]//2 + size[1]//6*math.sin(roll_e))
    pos_e_y = int(size[1]//2 + size[1]//6*math.cos(roll_e))
    pygame.draw.circle(screen, BLUE, (pos_e_x, pos_e_y), 15, 0)  

    #---地球的轨迹线---可要可不要---
    pos_e.append((pos_e_x, pos_e_y))
    if len(pos_e) > 255:
        pos_e.pop(0)
    for i in range(len(pos_e)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN, pos_e[i], 1, 0)  

    #---6-4---月球=the Moon---
    roll_m += 0.1# 假设月球每帧公转0.1pi
    pos_m_x = int(pos_e_x + size[1]//20*math.sin(roll_m))
    pos_m_y = int(pos_e_y + size[1]//20*math.cos(roll_m))
    pygame.draw.circle(screen, GREEN, (pos_m_x, pos_m_y), 5, 0)  

    #---月球的轨迹线---可要可不要---
    pos_mm.append((pos_m_x, pos_m_y))
    if len(pos_mm) > 255:
        pos_mm.pop(0)
    for i in range(len(pos_mm)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN ,pos_mm[i], 1, 0)  

    #---6-5---金星=the Venas---
    roll_v += 0.015# 假设金星每帧公转0.015pi
    pos_v_x = int(size[0]//2 + size[1]//3*math.sin(roll_v))
    pos_v_y = int(size[1]//2 + size[1]//3*math.cos(roll_v))
    pygame.draw.circle(screen, RED, (pos_v_x, pos_v_y), 20, 0)  

    #---金星的轨迹线---可要可不要---
    pos_v.append((pos_v_x, pos_v_y))
    if len(pos_v) > 255:
        pos_v.pop(0)
    for i in range(len(pos_v)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, (0,255,0), pos_v[i], 1, 0)  

    #---6-6---其他几个行星---缺点不是椭圆形轨道---
    # 3
    roll_3 += 0.03# 假设金星每帧公转0.03pi
    pos_3_x = int(size[0]//2 + size[1]//3.5*math.sin(roll_3))
    pos_3_y = int(size[1]//2 + size[1]//3.5*math.cos(roll_3))
    pygame.draw.circle(screen, WHITE,(pos_3_x, pos_3_y), 20, 0)  

    # 4
    roll_4 += 0.04# 假设金星每帧公转0.04pi
    pos_4_x = int(size[0]//2 + size[1]//4*math.sin(roll_4))
    pos_4_y = int(size[1]//2 + size[1]//4*math.cos(roll_4))
    pygame.draw.circle(screen, WHITE,(pos_4_x, pos_4_y), 20, 0)  

    # 5
    roll_5 += 0.05# 假设金星每帧公转0.05pi
    pos_5_x = int(size[0]//2 + size[1]//5*math.sin(roll_5))
    pos_5_y = int(size[1]//2 + size[1]//5*math.cos(roll_5))
    pygame.draw.circle(screen, WHITE, (pos_5_x, pos_5_y), 20, 0)
    # 6
    roll_6 += 0.06# 假设金星每帧公转0.06pi
    pos_6_x = int(size[0]//2 + size[1]//2.5*math.sin(roll_6))
    pos_6_y = int(size[1]//2 + size[1]//2.5*math.cos(roll_6))
    pygame.draw.circle(screen, WHITE,(pos_6_x, pos_6_y), 20, 0)  

    # 7
    roll_7 += 0.07# 假设金星每帧公转0.07pi
    pos_7_x = int(size[0]//2 + size[1]//4.5*math.sin(roll_7))
    pos_7_y = int(size[1]//2 + size[1]//4.5*math.cos(roll_7))
    pygame.draw.circle(screen, WHITE, (pos_7_x, pos_7_y), 20, 0)  

    # 8
    roll_8 += 0.08# 假设金星每帧公转0.08pi
    pos_8_x = int(size[0]//2 + size[1]//5.5*math.sin(roll_8))
    pos_8_y = int(size[1]//2 + size[1]//5.5*math.cos(roll_8))
    pygame.draw.circle(screen, WHITE, (pos_8_x, pos_8_y), 20, 0)  

    #刷新
    pygame.display.flip()
    #数值越大刷新越快,小球运动越快
    clock.tick(40)  

9.效果图:

10,适合收藏,慢慢逐行研究pygame的代码。

本文参考原文-http://bjbsair.com/2020-03-25/tech-info/6268/

1.太阳系

2.今天来模拟太阳系的运动的行星,用python3和pygame来制作。

3.第1步:

#---第1步---导出模块---
import pygame
import sys
import math
from pygame.locals import *

4.第2步:

#---第2步---游戏初始化---
pygame.init()

5.第3步:

#---第3步---定义颜色---
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

6.第4步:

#---第4步---定义窗口大小、标题名称、字体设置、创建时钟---
size = width, height = 2200, 1400
screen = pygame.display.set_mode(size)
pygame.display.set_caption("太阳-地球-月亮-金星等示意图")
#字体的初定义,注意英文就这样
myfont=pygame.font.Font(None,60)
#如果是中文,字体hwfs=华文仿宋字体,放在根目录下
#myfont=pygame.font.Font(‘hwfs.ttf‘,60)
#创建时钟对象 (可以控制游戏循环频率)---必须要---
clock = pygame.time.Clock()

=以上4步基本格式固定=

7.第5步:这里有列表定义,多个列表的定义和一行多次赋值,都是python的特点。

#---第5步---初始化相关定义---具体到各个游戏的定义---
#定义三个空列表
‘‘‘
pos_v=[]
pos_e = []
pos_mm = []
‘‘‘
#与上面的作用相同
pos_v=pos_e=pos_mm=[]
#金星、地球和月球等其他行星的公转过的角度
roll_v = roll_e = roll_m = 0
roll_3=roll_4=roll_5=roll_6=roll_7=roll_8=0  

#太阳的位置---相对固定---中心
#知识点:size是一行赋值法,相当于size=(width, height )的元组
#size[0]=width,size[1]=height
position = size[0]//2, size[1]//2

8.第6步:

#---第6步---游戏循环---
while True:
    #---6-1---首先---
    #---pygame的游戏循环必不可少的---个人建议和喜欢---
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
    #背景颜色为黑色
    screen.fill(BLACK)
    #屏幕上显示文字设置
    textImage=myfont.render("Sun=yellow,Earth=blue,Moon=green,Venas=red",True,GREEN)
    #在屏幕坐标为100和100的位置显示
    screen.blit(textImage,(100,100))  

    #---6-2---画太阳sun的大小、位置、颜色设置,60的大小较合适---
    pygame.draw.circle(screen, YELLOW, position, 60, 0)  

    #---6-3---地球=the Earth---
    roll_e += 0.01# 假设地球每帧公转0.01pi
    pos_e_x = int(size[0]//2 + size[1]//6*math.sin(roll_e))
    pos_e_y = int(size[1]//2 + size[1]//6*math.cos(roll_e))
    pygame.draw.circle(screen, BLUE, (pos_e_x, pos_e_y), 15, 0)  

    #---地球的轨迹线---可要可不要---
    pos_e.append((pos_e_x, pos_e_y))
    if len(pos_e) > 255:
        pos_e.pop(0)
    for i in range(len(pos_e)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN, pos_e[i], 1, 0)  

    #---6-4---月球=the Moon---
    roll_m += 0.1# 假设月球每帧公转0.1pi
    pos_m_x = int(pos_e_x + size[1]//20*math.sin(roll_m))
    pos_m_y = int(pos_e_y + size[1]//20*math.cos(roll_m))
    pygame.draw.circle(screen, GREEN, (pos_m_x, pos_m_y), 5, 0)  

    #---月球的轨迹线---可要可不要---
    pos_mm.append((pos_m_x, pos_m_y))
    if len(pos_mm) > 255:
        pos_mm.pop(0)
    for i in range(len(pos_mm)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN ,pos_mm[i], 1, 0)  

    #---6-5---金星=the Venas---
    roll_v += 0.015# 假设金星每帧公转0.015pi
    pos_v_x = int(size[0]//2 + size[1]//3*math.sin(roll_v))
    pos_v_y = int(size[1]//2 + size[1]//3*math.cos(roll_v))
    pygame.draw.circle(screen, RED, (pos_v_x, pos_v_y), 20, 0)  

    #---金星的轨迹线---可要可不要---
    pos_v.append((pos_v_x, pos_v_y))
    if len(pos_v) > 255:
        pos_v.pop(0)
    for i in range(len(pos_v)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, (0,255,0), pos_v[i], 1, 0)  

    #---6-6---其他几个行星---缺点不是椭圆形轨道---
    # 3
    roll_3 += 0.03# 假设金星每帧公转0.03pi
    pos_3_x = int(size[0]//2 + size[1]//3.5*math.sin(roll_3))
    pos_3_y = int(size[1]//2 + size[1]//3.5*math.cos(roll_3))
    pygame.draw.circle(screen, WHITE,(pos_3_x, pos_3_y), 20, 0)  

    # 4
    roll_4 += 0.04# 假设金星每帧公转0.04pi
    pos_4_x = int(size[0]//2 + size[1]//4*math.sin(roll_4))
    pos_4_y = int(size[1]//2 + size[1]//4*math.cos(roll_4))
    pygame.draw.circle(screen, WHITE,(pos_4_x, pos_4_y), 20, 0)  

    # 5
    roll_5 += 0.05# 假设金星每帧公转0.05pi
    pos_5_x = int(size[0]//2 + size[1]//5*math.sin(roll_5))
    pos_5_y = int(size[1]//2 + size[1]//5*math.cos(roll_5))
    pygame.draw.circle(screen, WHITE, (pos_5_x, pos_5_y), 20, 0)
    # 6
    roll_6 += 0.06# 假设金星每帧公转0.06pi
    pos_6_x = int(size[0]//2 + size[1]//2.5*math.sin(roll_6))
    pos_6_y = int(size[1]//2 + size[1]//2.5*math.cos(roll_6))
    pygame.draw.circle(screen, WHITE,(pos_6_x, pos_6_y), 20, 0)  

    # 7
    roll_7 += 0.07# 假设金星每帧公转0.07pi
    pos_7_x = int(size[0]//2 + size[1]//4.5*math.sin(roll_7))
    pos_7_y = int(size[1]//2 + size[1]//4.5*math.cos(roll_7))
    pygame.draw.circle(screen, WHITE, (pos_7_x, pos_7_y), 20, 0)  

    # 8
    roll_8 += 0.08# 假设金星每帧公转0.08pi
    pos_8_x = int(size[0]//2 + size[1]//5.5*math.sin(roll_8))
    pos_8_y = int(size[1]//2 + size[1]//5.5*math.cos(roll_8))
    pygame.draw.circle(screen, WHITE, (pos_8_x, pos_8_y), 20, 0)  

    #刷新
    pygame.display.flip()
    #数值越大刷新越快,小球运动越快
    clock.tick(40)  

9.效果图:

10,适合收藏,慢慢逐行研究pygame的代码。

本文参考原文-http://bjbsair.com/2020-03-25/tech-info/6268/

1.太阳系

2.今天来模拟太阳系的运动的行星,用python3和pygame来制作。

3.第1步:

#---第1步---导出模块---
import pygame
import sys
import math
from pygame.locals import *

4.第2步:

#---第2步---游戏初始化---
pygame.init()

5.第3步:

#---第3步---定义颜色---
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

6.第4步:

#---第4步---定义窗口大小、标题名称、字体设置、创建时钟---
size = width, height = 2200, 1400
screen = pygame.display.set_mode(size)
pygame.display.set_caption("太阳-地球-月亮-金星等示意图")
#字体的初定义,注意英文就这样
myfont=pygame.font.Font(None,60)
#如果是中文,字体hwfs=华文仿宋字体,放在根目录下
#myfont=pygame.font.Font(‘hwfs.ttf‘,60)
#创建时钟对象 (可以控制游戏循环频率)---必须要---
clock = pygame.time.Clock()

=以上4步基本格式固定=

7.第5步:这里有列表定义,多个列表的定义和一行多次赋值,都是python的特点。

#---第5步---初始化相关定义---具体到各个游戏的定义---
#定义三个空列表
‘‘‘
pos_v=[]
pos_e = []
pos_mm = []
‘‘‘
#与上面的作用相同
pos_v=pos_e=pos_mm=[]
#金星、地球和月球等其他行星的公转过的角度
roll_v = roll_e = roll_m = 0
roll_3=roll_4=roll_5=roll_6=roll_7=roll_8=0  

#太阳的位置---相对固定---中心
#知识点:size是一行赋值法,相当于size=(width, height )的元组
#size[0]=width,size[1]=height
position = size[0]//2, size[1]//2

8.第6步:

#---第6步---游戏循环---
while True:
    #---6-1---首先---
    #---pygame的游戏循环必不可少的---个人建议和喜欢---
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
    #背景颜色为黑色
    screen.fill(BLACK)
    #屏幕上显示文字设置
    textImage=myfont.render("Sun=yellow,Earth=blue,Moon=green,Venas=red",True,GREEN)
    #在屏幕坐标为100和100的位置显示
    screen.blit(textImage,(100,100))  

    #---6-2---画太阳sun的大小、位置、颜色设置,60的大小较合适---
    pygame.draw.circle(screen, YELLOW, position, 60, 0)  

    #---6-3---地球=the Earth---
    roll_e += 0.01# 假设地球每帧公转0.01pi
    pos_e_x = int(size[0]//2 + size[1]//6*math.sin(roll_e))
    pos_e_y = int(size[1]//2 + size[1]//6*math.cos(roll_e))
    pygame.draw.circle(screen, BLUE, (pos_e_x, pos_e_y), 15, 0)  

    #---地球的轨迹线---可要可不要---
    pos_e.append((pos_e_x, pos_e_y))
    if len(pos_e) > 255:
        pos_e.pop(0)
    for i in range(len(pos_e)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN, pos_e[i], 1, 0)  

    #---6-4---月球=the Moon---
    roll_m += 0.1# 假设月球每帧公转0.1pi
    pos_m_x = int(pos_e_x + size[1]//20*math.sin(roll_m))
    pos_m_y = int(pos_e_y + size[1]//20*math.cos(roll_m))
    pygame.draw.circle(screen, GREEN, (pos_m_x, pos_m_y), 5, 0)  

    #---月球的轨迹线---可要可不要---
    pos_mm.append((pos_m_x, pos_m_y))
    if len(pos_mm) > 255:
        pos_mm.pop(0)
    for i in range(len(pos_mm)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN ,pos_mm[i], 1, 0)  

    #---6-5---金星=the Venas---
    roll_v += 0.015# 假设金星每帧公转0.015pi
    pos_v_x = int(size[0]//2 + size[1]//3*math.sin(roll_v))
    pos_v_y = int(size[1]//2 + size[1]//3*math.cos(roll_v))
    pygame.draw.circle(screen, RED, (pos_v_x, pos_v_y), 20, 0)  

    #---金星的轨迹线---可要可不要---
    pos_v.append((pos_v_x, pos_v_y))
    if len(pos_v) > 255:
        pos_v.pop(0)
    for i in range(len(pos_v)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, (0,255,0), pos_v[i], 1, 0)  

    #---6-6---其他几个行星---缺点不是椭圆形轨道---
    # 3
    roll_3 += 0.03# 假设金星每帧公转0.03pi
    pos_3_x = int(size[0]//2 + size[1]//3.5*math.sin(roll_3))
    pos_3_y = int(size[1]//2 + size[1]//3.5*math.cos(roll_3))
    pygame.draw.circle(screen, WHITE,(pos_3_x, pos_3_y), 20, 0)  

    # 4
    roll_4 += 0.04# 假设金星每帧公转0.04pi
    pos_4_x = int(size[0]//2 + size[1]//4*math.sin(roll_4))
    pos_4_y = int(size[1]//2 + size[1]//4*math.cos(roll_4))
    pygame.draw.circle(screen, WHITE,(pos_4_x, pos_4_y), 20, 0)  

    # 5
    roll_5 += 0.05# 假设金星每帧公转0.05pi
    pos_5_x = int(size[0]//2 + size[1]//5*math.sin(roll_5))
    pos_5_y = int(size[1]//2 + size[1]//5*math.cos(roll_5))
    pygame.draw.circle(screen, WHITE, (pos_5_x, pos_5_y), 20, 0)
    # 6
    roll_6 += 0.06# 假设金星每帧公转0.06pi
    pos_6_x = int(size[0]//2 + size[1]//2.5*math.sin(roll_6))
    pos_6_y = int(size[1]//2 + size[1]//2.5*math.cos(roll_6))
    pygame.draw.circle(screen, WHITE,(pos_6_x, pos_6_y), 20, 0)  

    # 7
    roll_7 += 0.07# 假设金星每帧公转0.07pi
    pos_7_x = int(size[0]//2 + size[1]//4.5*math.sin(roll_7))
    pos_7_y = int(size[1]//2 + size[1]//4.5*math.cos(roll_7))
    pygame.draw.circle(screen, WHITE, (pos_7_x, pos_7_y), 20, 0)  

    # 8
    roll_8 += 0.08# 假设金星每帧公转0.08pi
    pos_8_x = int(size[0]//2 + size[1]//5.5*math.sin(roll_8))
    pos_8_y = int(size[1]//2 + size[1]//5.5*math.cos(roll_8))
    pygame.draw.circle(screen, WHITE, (pos_8_x, pos_8_y), 20, 0)  

    #刷新
    pygame.display.flip()
    #数值越大刷新越快,小球运动越快
    clock.tick(40)  

9.效果图:

10,适合收藏,慢慢逐行研究pygame的代码。

本文参考原文-http://bjbsair.com/2020-03-25/tech-info/6268/

1.太阳系

2.今天来模拟太阳系的运动的行星,用python3和pygame来制作。

3.第1步:

#---第1步---导出模块---
import pygame
import sys
import math
from pygame.locals import *

4.第2步:

#---第2步---游戏初始化---
pygame.init()

5.第3步:

#---第3步---定义颜色---
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

6.第4步:

#---第4步---定义窗口大小、标题名称、字体设置、创建时钟---
size = width, height = 2200, 1400
screen = pygame.display.set_mode(size)
pygame.display.set_caption("太阳-地球-月亮-金星等示意图")
#字体的初定义,注意英文就这样
myfont=pygame.font.Font(None,60)
#如果是中文,字体hwfs=华文仿宋字体,放在根目录下
#myfont=pygame.font.Font(‘hwfs.ttf‘,60)
#创建时钟对象 (可以控制游戏循环频率)---必须要---
clock = pygame.time.Clock()

=以上4步基本格式固定=

7.第5步:这里有列表定义,多个列表的定义和一行多次赋值,都是python的特点。

#---第5步---初始化相关定义---具体到各个游戏的定义---
#定义三个空列表
‘‘‘
pos_v=[]
pos_e = []
pos_mm = []
‘‘‘
#与上面的作用相同
pos_v=pos_e=pos_mm=[]
#金星、地球和月球等其他行星的公转过的角度
roll_v = roll_e = roll_m = 0
roll_3=roll_4=roll_5=roll_6=roll_7=roll_8=0  

#太阳的位置---相对固定---中心
#知识点:size是一行赋值法,相当于size=(width, height )的元组
#size[0]=width,size[1]=height
position = size[0]//2, size[1]//2

8.第6步:

#---第6步---游戏循环---
while True:
    #---6-1---首先---
    #---pygame的游戏循环必不可少的---个人建议和喜欢---
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
    #背景颜色为黑色
    screen.fill(BLACK)
    #屏幕上显示文字设置
    textImage=myfont.render("Sun=yellow,Earth=blue,Moon=green,Venas=red",True,GREEN)
    #在屏幕坐标为100和100的位置显示
    screen.blit(textImage,(100,100))  

    #---6-2---画太阳sun的大小、位置、颜色设置,60的大小较合适---
    pygame.draw.circle(screen, YELLOW, position, 60, 0)  

    #---6-3---地球=the Earth---
    roll_e += 0.01# 假设地球每帧公转0.01pi
    pos_e_x = int(size[0]//2 + size[1]//6*math.sin(roll_e))
    pos_e_y = int(size[1]//2 + size[1]//6*math.cos(roll_e))
    pygame.draw.circle(screen, BLUE, (pos_e_x, pos_e_y), 15, 0)  

    #---地球的轨迹线---可要可不要---
    pos_e.append((pos_e_x, pos_e_y))
    if len(pos_e) > 255:
        pos_e.pop(0)
    for i in range(len(pos_e)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN, pos_e[i], 1, 0)  

    #---6-4---月球=the Moon---
    roll_m += 0.1# 假设月球每帧公转0.1pi
    pos_m_x = int(pos_e_x + size[1]//20*math.sin(roll_m))
    pos_m_y = int(pos_e_y + size[1]//20*math.cos(roll_m))
    pygame.draw.circle(screen, GREEN, (pos_m_x, pos_m_y), 5, 0)  

    #---月球的轨迹线---可要可不要---
    pos_mm.append((pos_m_x, pos_m_y))
    if len(pos_mm) > 255:
        pos_mm.pop(0)
    for i in range(len(pos_mm)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN ,pos_mm[i], 1, 0)  

    #---6-5---金星=the Venas---
    roll_v += 0.015# 假设金星每帧公转0.015pi
    pos_v_x = int(size[0]//2 + size[1]//3*math.sin(roll_v))
    pos_v_y = int(size[1]//2 + size[1]//3*math.cos(roll_v))
    pygame.draw.circle(screen, RED, (pos_v_x, pos_v_y), 20, 0)  

    #---金星的轨迹线---可要可不要---
    pos_v.append((pos_v_x, pos_v_y))
    if len(pos_v) > 255:
        pos_v.pop(0)
    for i in range(len(pos_v)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, (0,255,0), pos_v[i], 1, 0)  

    #---6-6---其他几个行星---缺点不是椭圆形轨道---
    # 3
    roll_3 += 0.03# 假设金星每帧公转0.03pi
    pos_3_x = int(size[0]//2 + size[1]//3.5*math.sin(roll_3))
    pos_3_y = int(size[1]//2 + size[1]//3.5*math.cos(roll_3))
    pygame.draw.circle(screen, WHITE,(pos_3_x, pos_3_y), 20, 0)  

    # 4
    roll_4 += 0.04# 假设金星每帧公转0.04pi
    pos_4_x = int(size[0]//2 + size[1]//4*math.sin(roll_4))
    pos_4_y = int(size[1]//2 + size[1]//4*math.cos(roll_4))
    pygame.draw.circle(screen, WHITE,(pos_4_x, pos_4_y), 20, 0)  

    # 5
    roll_5 += 0.05# 假设金星每帧公转0.05pi
    pos_5_x = int(size[0]//2 + size[1]//5*math.sin(roll_5))
    pos_5_y = int(size[1]//2 + size[1]//5*math.cos(roll_5))
    pygame.draw.circle(screen, WHITE, (pos_5_x, pos_5_y), 20, 0)
    # 6
    roll_6 += 0.06# 假设金星每帧公转0.06pi
    pos_6_x = int(size[0]//2 + size[1]//2.5*math.sin(roll_6))
    pos_6_y = int(size[1]//2 + size[1]//2.5*math.cos(roll_6))
    pygame.draw.circle(screen, WHITE,(pos_6_x, pos_6_y), 20, 0)  

    # 7
    roll_7 += 0.07# 假设金星每帧公转0.07pi
    pos_7_x = int(size[0]//2 + size[1]//4.5*math.sin(roll_7))
    pos_7_y = int(size[1]//2 + size[1]//4.5*math.cos(roll_7))
    pygame.draw.circle(screen, WHITE, (pos_7_x, pos_7_y), 20, 0)  

    # 8
    roll_8 += 0.08# 假设金星每帧公转0.08pi
    pos_8_x = int(size[0]//2 + size[1]//5.5*math.sin(roll_8))
    pos_8_y = int(size[1]//2 + size[1]//5.5*math.cos(roll_8))
    pygame.draw.circle(screen, WHITE, (pos_8_x, pos_8_y), 20, 0)  

    #刷新
    pygame.display.flip()
    #数值越大刷新越快,小球运动越快
    clock.tick(40)  

9.效果图:

10,适合收藏,慢慢逐行研究pygame的代码。

本文参考原文-http://bjbsair.com/2020-03-25/tech-info/6268/

1.太阳系

2.今天来模拟太阳系的运动的行星,用python3和pygame来制作。

3.第1步:

#---第1步---导出模块---
import pygame
import sys
import math
from pygame.locals import *

4.第2步:

#---第2步---游戏初始化---
pygame.init()

5.第3步:

#---第3步---定义颜色---
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

6.第4步:

#---第4步---定义窗口大小、标题名称、字体设置、创建时钟---
size = width, height = 2200, 1400
screen = pygame.display.set_mode(size)
pygame.display.set_caption("太阳-地球-月亮-金星等示意图")
#字体的初定义,注意英文就这样
myfont=pygame.font.Font(None,60)
#如果是中文,字体hwfs=华文仿宋字体,放在根目录下
#myfont=pygame.font.Font(‘hwfs.ttf‘,60)
#创建时钟对象 (可以控制游戏循环频率)---必须要---
clock = pygame.time.Clock()

=以上4步基本格式固定=

7.第5步:这里有列表定义,多个列表的定义和一行多次赋值,都是python的特点。

#---第5步---初始化相关定义---具体到各个游戏的定义---
#定义三个空列表
‘‘‘
pos_v=[]
pos_e = []
pos_mm = []
‘‘‘
#与上面的作用相同
pos_v=pos_e=pos_mm=[]
#金星、地球和月球等其他行星的公转过的角度
roll_v = roll_e = roll_m = 0
roll_3=roll_4=roll_5=roll_6=roll_7=roll_8=0  

#太阳的位置---相对固定---中心
#知识点:size是一行赋值法,相当于size=(width, height )的元组
#size[0]=width,size[1]=height
position = size[0]//2, size[1]//2

8.第6步:

#---第6步---游戏循环---
while True:
    #---6-1---首先---
    #---pygame的游戏循环必不可少的---个人建议和喜欢---
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
    #背景颜色为黑色
    screen.fill(BLACK)
    #屏幕上显示文字设置
    textImage=myfont.render("Sun=yellow,Earth=blue,Moon=green,Venas=red",True,GREEN)
    #在屏幕坐标为100和100的位置显示
    screen.blit(textImage,(100,100))  

    #---6-2---画太阳sun的大小、位置、颜色设置,60的大小较合适---
    pygame.draw.circle(screen, YELLOW, position, 60, 0)  

    #---6-3---地球=the Earth---
    roll_e += 0.01# 假设地球每帧公转0.01pi
    pos_e_x = int(size[0]//2 + size[1]//6*math.sin(roll_e))
    pos_e_y = int(size[1]//2 + size[1]//6*math.cos(roll_e))
    pygame.draw.circle(screen, BLUE, (pos_e_x, pos_e_y), 15, 0)  

    #---地球的轨迹线---可要可不要---
    pos_e.append((pos_e_x, pos_e_y))
    if len(pos_e) > 255:
        pos_e.pop(0)
    for i in range(len(pos_e)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN, pos_e[i], 1, 0)  

    #---6-4---月球=the Moon---
    roll_m += 0.1# 假设月球每帧公转0.1pi
    pos_m_x = int(pos_e_x + size[1]//20*math.sin(roll_m))
    pos_m_y = int(pos_e_y + size[1]//20*math.cos(roll_m))
    pygame.draw.circle(screen, GREEN, (pos_m_x, pos_m_y), 5, 0)  

    #---月球的轨迹线---可要可不要---
    pos_mm.append((pos_m_x, pos_m_y))
    if len(pos_mm) > 255:
        pos_mm.pop(0)
    for i in range(len(pos_mm)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN ,pos_mm[i], 1, 0)  

    #---6-5---金星=the Venas---
    roll_v += 0.015# 假设金星每帧公转0.015pi
    pos_v_x = int(size[0]//2 + size[1]//3*math.sin(roll_v))
    pos_v_y = int(size[1]//2 + size[1]//3*math.cos(roll_v))
    pygame.draw.circle(screen, RED, (pos_v_x, pos_v_y), 20, 0)  

    #---金星的轨迹线---可要可不要---
    pos_v.append((pos_v_x, pos_v_y))
    if len(pos_v) > 255:
        pos_v.pop(0)
    for i in range(len(pos_v)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, (0,255,0), pos_v[i], 1, 0)  

    #---6-6---其他几个行星---缺点不是椭圆形轨道---
    # 3
    roll_3 += 0.03# 假设金星每帧公转0.03pi
    pos_3_x = int(size[0]//2 + size[1]//3.5*math.sin(roll_3))
    pos_3_y = int(size[1]//2 + size[1]//3.5*math.cos(roll_3))
    pygame.draw.circle(screen, WHITE,(pos_3_x, pos_3_y), 20, 0)  

    # 4
    roll_4 += 0.04# 假设金星每帧公转0.04pi
    pos_4_x = int(size[0]//2 + size[1]//4*math.sin(roll_4))
    pos_4_y = int(size[1]//2 + size[1]//4*math.cos(roll_4))
    pygame.draw.circle(screen, WHITE,(pos_4_x, pos_4_y), 20, 0)  

    # 5
    roll_5 += 0.05# 假设金星每帧公转0.05pi
    pos_5_x = int(size[0]//2 + size[1]//5*math.sin(roll_5))
    pos_5_y = int(size[1]//2 + size[1]//5*math.cos(roll_5))
    pygame.draw.circle(screen, WHITE, (pos_5_x, pos_5_y), 20, 0)
    # 6
    roll_6 += 0.06# 假设金星每帧公转0.06pi
    pos_6_x = int(size[0]//2 + size[1]//2.5*math.sin(roll_6))
    pos_6_y = int(size[1]//2 + size[1]//2.5*math.cos(roll_6))
    pygame.draw.circle(screen, WHITE,(pos_6_x, pos_6_y), 20, 0)  

    # 7
    roll_7 += 0.07# 假设金星每帧公转0.07pi
    pos_7_x = int(size[0]//2 + size[1]//4.5*math.sin(roll_7))
    pos_7_y = int(size[1]//2 + size[1]//4.5*math.cos(roll_7))
    pygame.draw.circle(screen, WHITE, (pos_7_x, pos_7_y), 20, 0)  

    # 8
    roll_8 += 0.08# 假设金星每帧公转0.08pi
    pos_8_x = int(size[0]//2 + size[1]//5.5*math.sin(roll_8))
    pos_8_y = int(size[1]//2 + size[1]//5.5*math.cos(roll_8))
    pygame.draw.circle(screen, WHITE, (pos_8_x, pos_8_y), 20, 0)  

    #刷新
    pygame.display.flip()
    #数值越大刷新越快,小球运动越快
    clock.tick(40)  

9.效果图:

10,适合收藏,慢慢逐行研究pygame的代码。

本文参考原文-http://bjbsair.com/2020-03-25/tech-info/6268/

1.太阳系

2.今天来模拟太阳系的运动的行星,用python3和pygame来制作。

3.第1步:

#---第1步---导出模块---
import pygame
import sys
import math
from pygame.locals import *

4.第2步:

#---第2步---游戏初始化---
pygame.init()

5.第3步:

#---第3步---定义颜色---
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

6.第4步:

#---第4步---定义窗口大小、标题名称、字体设置、创建时钟---
size = width, height = 2200, 1400
screen = pygame.display.set_mode(size)
pygame.display.set_caption("太阳-地球-月亮-金星等示意图")
#字体的初定义,注意英文就这样
myfont=pygame.font.Font(None,60)
#如果是中文,字体hwfs=华文仿宋字体,放在根目录下
#myfont=pygame.font.Font(‘hwfs.ttf‘,60)
#创建时钟对象 (可以控制游戏循环频率)---必须要---
clock = pygame.time.Clock()

=以上4步基本格式固定=

7.第5步:这里有列表定义,多个列表的定义和一行多次赋值,都是python的特点。

#---第5步---初始化相关定义---具体到各个游戏的定义---
#定义三个空列表
‘‘‘
pos_v=[]
pos_e = []
pos_mm = []
‘‘‘
#与上面的作用相同
pos_v=pos_e=pos_mm=[]
#金星、地球和月球等其他行星的公转过的角度
roll_v = roll_e = roll_m = 0
roll_3=roll_4=roll_5=roll_6=roll_7=roll_8=0  

#太阳的位置---相对固定---中心
#知识点:size是一行赋值法,相当于size=(width, height )的元组
#size[0]=width,size[1]=height
position = size[0]//2, size[1]//2

8.第6步:

#---第6步---游戏循环---
while True:
    #---6-1---首先---
    #---pygame的游戏循环必不可少的---个人建议和喜欢---
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
    #背景颜色为黑色
    screen.fill(BLACK)
    #屏幕上显示文字设置
    textImage=myfont.render("Sun=yellow,Earth=blue,Moon=green,Venas=red",True,GREEN)
    #在屏幕坐标为100和100的位置显示
    screen.blit(textImage,(100,100))  

    #---6-2---画太阳sun的大小、位置、颜色设置,60的大小较合适---
    pygame.draw.circle(screen, YELLOW, position, 60, 0)  

    #---6-3---地球=the Earth---
    roll_e += 0.01# 假设地球每帧公转0.01pi
    pos_e_x = int(size[0]//2 + size[1]//6*math.sin(roll_e))
    pos_e_y = int(size[1]//2 + size[1]//6*math.cos(roll_e))
    pygame.draw.circle(screen, BLUE, (pos_e_x, pos_e_y), 15, 0)  

    #---地球的轨迹线---可要可不要---
    pos_e.append((pos_e_x, pos_e_y))
    if len(pos_e) > 255:
        pos_e.pop(0)
    for i in range(len(pos_e)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN, pos_e[i], 1, 0)  

    #---6-4---月球=the Moon---
    roll_m += 0.1# 假设月球每帧公转0.1pi
    pos_m_x = int(pos_e_x + size[1]//20*math.sin(roll_m))
    pos_m_y = int(pos_e_y + size[1]//20*math.cos(roll_m))
    pygame.draw.circle(screen, GREEN, (pos_m_x, pos_m_y), 5, 0)  

    #---月球的轨迹线---可要可不要---
    pos_mm.append((pos_m_x, pos_m_y))
    if len(pos_mm) > 255:
        pos_mm.pop(0)
    for i in range(len(pos_mm)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN ,pos_mm[i], 1, 0)  

    #---6-5---金星=the Venas---
    roll_v += 0.015# 假设金星每帧公转0.015pi
    pos_v_x = int(size[0]//2 + size[1]//3*math.sin(roll_v))
    pos_v_y = int(size[1]//2 + size[1]//3*math.cos(roll_v))
    pygame.draw.circle(screen, RED, (pos_v_x, pos_v_y), 20, 0)  

    #---金星的轨迹线---可要可不要---
    pos_v.append((pos_v_x, pos_v_y))
    if len(pos_v) > 255:
        pos_v.pop(0)
    for i in range(len(pos_v)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, (0,255,0), pos_v[i], 1, 0)  

    #---6-6---其他几个行星---缺点不是椭圆形轨道---
    # 3
    roll_3 += 0.03# 假设金星每帧公转0.03pi
    pos_3_x = int(size[0]//2 + size[1]//3.5*math.sin(roll_3))
    pos_3_y = int(size[1]//2 + size[1]//3.5*math.cos(roll_3))
    pygame.draw.circle(screen, WHITE,(pos_3_x, pos_3_y), 20, 0)  

    # 4
    roll_4 += 0.04# 假设金星每帧公转0.04pi
    pos_4_x = int(size[0]//2 + size[1]//4*math.sin(roll_4))
    pos_4_y = int(size[1]//2 + size[1]//4*math.cos(roll_4))
    pygame.draw.circle(screen, WHITE,(pos_4_x, pos_4_y), 20, 0)  

    # 5
    roll_5 += 0.05# 假设金星每帧公转0.05pi
    pos_5_x = int(size[0]//2 + size[1]//5*math.sin(roll_5))
    pos_5_y = int(size[1]//2 + size[1]//5*math.cos(roll_5))
    pygame.draw.circle(screen, WHITE, (pos_5_x, pos_5_y), 20, 0)
    # 6
    roll_6 += 0.06# 假设金星每帧公转0.06pi
    pos_6_x = int(size[0]//2 + size[1]//2.5*math.sin(roll_6))
    pos_6_y = int(size[1]//2 + size[1]//2.5*math.cos(roll_6))
    pygame.draw.circle(screen, WHITE,(pos_6_x, pos_6_y), 20, 0)  

    # 7
    roll_7 += 0.07# 假设金星每帧公转0.07pi
    pos_7_x = int(size[0]//2 + size[1]//4.5*math.sin(roll_7))
    pos_7_y = int(size[1]//2 + size[1]//4.5*math.cos(roll_7))
    pygame.draw.circle(screen, WHITE, (pos_7_x, pos_7_y), 20, 0)  

    # 8
    roll_8 += 0.08# 假设金星每帧公转0.08pi
    pos_8_x = int(size[0]//2 + size[1]//5.5*math.sin(roll_8))
    pos_8_y = int(size[1]//2 + size[1]//5.5*math.cos(roll_8))
    pygame.draw.circle(screen, WHITE, (pos_8_x, pos_8_y), 20, 0)  

    #刷新
    pygame.display.flip()
    #数值越大刷新越快,小球运动越快
    clock.tick(40)  

9.效果图:

10,适合收藏,慢慢逐行研究pygame的代码。

本文参考原文-http://bjbsair.com/2020-03-25/tech-info/6268/

1.太阳系

2.今天来模拟太阳系的运动的行星,用python3和pygame来制作。

3.第1步:

#---第1步---导出模块---
import pygame
import sys
import math
from pygame.locals import *

4.第2步:

#---第2步---游戏初始化---
pygame.init()

5.第3步:

#---第3步---定义颜色---
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

6.第4步:

#---第4步---定义窗口大小、标题名称、字体设置、创建时钟---
size = width, height = 2200, 1400
screen = pygame.display.set_mode(size)
pygame.display.set_caption("太阳-地球-月亮-金星等示意图")
#字体的初定义,注意英文就这样
myfont=pygame.font.Font(None,60)
#如果是中文,字体hwfs=华文仿宋字体,放在根目录下
#myfont=pygame.font.Font(‘hwfs.ttf‘,60)
#创建时钟对象 (可以控制游戏循环频率)---必须要---
clock = pygame.time.Clock()

=以上4步基本格式固定=

7.第5步:这里有列表定义,多个列表的定义和一行多次赋值,都是python的特点。

#---第5步---初始化相关定义---具体到各个游戏的定义---
#定义三个空列表
‘‘‘
pos_v=[]
pos_e = []
pos_mm = []
‘‘‘
#与上面的作用相同
pos_v=pos_e=pos_mm=[]
#金星、地球和月球等其他行星的公转过的角度
roll_v = roll_e = roll_m = 0
roll_3=roll_4=roll_5=roll_6=roll_7=roll_8=0  

#太阳的位置---相对固定---中心
#知识点:size是一行赋值法,相当于size=(width, height )的元组
#size[0]=width,size[1]=height
position = size[0]//2, size[1]//2

8.第6步:

#---第6步---游戏循环---
while True:
    #---6-1---首先---
    #---pygame的游戏循环必不可少的---个人建议和喜欢---
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
    #背景颜色为黑色
    screen.fill(BLACK)
    #屏幕上显示文字设置
    textImage=myfont.render("Sun=yellow,Earth=blue,Moon=green,Venas=red",True,GREEN)
    #在屏幕坐标为100和100的位置显示
    screen.blit(textImage,(100,100))  

    #---6-2---画太阳sun的大小、位置、颜色设置,60的大小较合适---
    pygame.draw.circle(screen, YELLOW, position, 60, 0)  

    #---6-3---地球=the Earth---
    roll_e += 0.01# 假设地球每帧公转0.01pi
    pos_e_x = int(size[0]//2 + size[1]//6*math.sin(roll_e))
    pos_e_y = int(size[1]//2 + size[1]//6*math.cos(roll_e))
    pygame.draw.circle(screen, BLUE, (pos_e_x, pos_e_y), 15, 0)  

    #---地球的轨迹线---可要可不要---
    pos_e.append((pos_e_x, pos_e_y))
    if len(pos_e) > 255:
        pos_e.pop(0)
    for i in range(len(pos_e)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN, pos_e[i], 1, 0)  

    #---6-4---月球=the Moon---
    roll_m += 0.1# 假设月球每帧公转0.1pi
    pos_m_x = int(pos_e_x + size[1]//20*math.sin(roll_m))
    pos_m_y = int(pos_e_y + size[1]//20*math.cos(roll_m))
    pygame.draw.circle(screen, GREEN, (pos_m_x, pos_m_y), 5, 0)  

    #---月球的轨迹线---可要可不要---
    pos_mm.append((pos_m_x, pos_m_y))
    if len(pos_mm) > 255:
        pos_mm.pop(0)
    for i in range(len(pos_mm)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN ,pos_mm[i], 1, 0)  

    #---6-5---金星=the Venas---
    roll_v += 0.015# 假设金星每帧公转0.015pi
    pos_v_x = int(size[0]//2 + size[1]//3*math.sin(roll_v))
    pos_v_y = int(size[1]//2 + size[1]//3*math.cos(roll_v))
    pygame.draw.circle(screen, RED, (pos_v_x, pos_v_y), 20, 0)  

    #---金星的轨迹线---可要可不要---
    pos_v.append((pos_v_x, pos_v_y))
    if len(pos_v) > 255:
        pos_v.pop(0)
    for i in range(len(pos_v)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, (0,255,0), pos_v[i], 1, 0)  

    #---6-6---其他几个行星---缺点不是椭圆形轨道---
    # 3
    roll_3 += 0.03# 假设金星每帧公转0.03pi
    pos_3_x = int(size[0]//2 + size[1]//3.5*math.sin(roll_3))
    pos_3_y = int(size[1]//2 + size[1]//3.5*math.cos(roll_3))
    pygame.draw.circle(screen, WHITE,(pos_3_x, pos_3_y), 20, 0)  

    # 4
    roll_4 += 0.04# 假设金星每帧公转0.04pi
    pos_4_x = int(size[0]//2 + size[1]//4*math.sin(roll_4))
    pos_4_y = int(size[1]//2 + size[1]//4*math.cos(roll_4))
    pygame.draw.circle(screen, WHITE,(pos_4_x, pos_4_y), 20, 0)  

    # 5
    roll_5 += 0.05# 假设金星每帧公转0.05pi
    pos_5_x = int(size[0]//2 + size[1]//5*math.sin(roll_5))
    pos_5_y = int(size[1]//2 + size[1]//5*math.cos(roll_5))
    pygame.draw.circle(screen, WHITE, (pos_5_x, pos_5_y), 20, 0)
    # 6
    roll_6 += 0.06# 假设金星每帧公转0.06pi
    pos_6_x = int(size[0]//2 + size[1]//2.5*math.sin(roll_6))
    pos_6_y = int(size[1]//2 + size[1]//2.5*math.cos(roll_6))
    pygame.draw.circle(screen, WHITE,(pos_6_x, pos_6_y), 20, 0)  

    # 7
    roll_7 += 0.07# 假设金星每帧公转0.07pi
    pos_7_x = int(size[0]//2 + size[1]//4.5*math.sin(roll_7))
    pos_7_y = int(size[1]//2 + size[1]//4.5*math.cos(roll_7))
    pygame.draw.circle(screen, WHITE, (pos_7_x, pos_7_y), 20, 0)  

    # 8
    roll_8 += 0.08# 假设金星每帧公转0.08pi
    pos_8_x = int(size[0]//2 + size[1]//5.5*math.sin(roll_8))
    pos_8_y = int(size[1]//2 + size[1]//5.5*math.cos(roll_8))
    pygame.draw.circle(screen, WHITE, (pos_8_x, pos_8_y), 20, 0)  

    #刷新
    pygame.display.flip()
    #数值越大刷新越快,小球运动越快
    clock.tick(40)  

9.效果图:

10,适合收藏,慢慢逐行研究pygame的代码。

本文参考原文-http://bjbsair.com/2020-03-25/tech-info/6268/

1.太阳系

2.今天来模拟太阳系的运动的行星,用python3和pygame来制作。

3.第1步:

#---第1步---导出模块---
import pygame
import sys
import math
from pygame.locals import *

4.第2步:

#---第2步---游戏初始化---
pygame.init()

5.第3步:

#---第3步---定义颜色---
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

6.第4步:

#---第4步---定义窗口大小、标题名称、字体设置、创建时钟---
size = width, height = 2200, 1400
screen = pygame.display.set_mode(size)
pygame.display.set_caption("太阳-地球-月亮-金星等示意图")
#字体的初定义,注意英文就这样
myfont=pygame.font.Font(None,60)
#如果是中文,字体hwfs=华文仿宋字体,放在根目录下
#myfont=pygame.font.Font(‘hwfs.ttf‘,60)
#创建时钟对象 (可以控制游戏循环频率)---必须要---
clock = pygame.time.Clock()

=以上4步基本格式固定=

7.第5步:这里有列表定义,多个列表的定义和一行多次赋值,都是python的特点。

#---第5步---初始化相关定义---具体到各个游戏的定义---
#定义三个空列表
‘‘‘
pos_v=[]
pos_e = []
pos_mm = []
‘‘‘
#与上面的作用相同
pos_v=pos_e=pos_mm=[]
#金星、地球和月球等其他行星的公转过的角度
roll_v = roll_e = roll_m = 0
roll_3=roll_4=roll_5=roll_6=roll_7=roll_8=0  

#太阳的位置---相对固定---中心
#知识点:size是一行赋值法,相当于size=(width, height )的元组
#size[0]=width,size[1]=height
position = size[0]//2, size[1]//2

8.第6步:

#---第6步---游戏循环---
while True:
    #---6-1---首先---
    #---pygame的游戏循环必不可少的---个人建议和喜欢---
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
    #背景颜色为黑色
    screen.fill(BLACK)
    #屏幕上显示文字设置
    textImage=myfont.render("Sun=yellow,Earth=blue,Moon=green,Venas=red",True,GREEN)
    #在屏幕坐标为100和100的位置显示
    screen.blit(textImage,(100,100))  

    #---6-2---画太阳sun的大小、位置、颜色设置,60的大小较合适---
    pygame.draw.circle(screen, YELLOW, position, 60, 0)  

    #---6-3---地球=the Earth---
    roll_e += 0.01# 假设地球每帧公转0.01pi
    pos_e_x = int(size[0]//2 + size[1]//6*math.sin(roll_e))
    pos_e_y = int(size[1]//2 + size[1]//6*math.cos(roll_e))
    pygame.draw.circle(screen, BLUE, (pos_e_x, pos_e_y), 15, 0)  

    #---地球的轨迹线---可要可不要---
    pos_e.append((pos_e_x, pos_e_y))
    if len(pos_e) > 255:
        pos_e.pop(0)
    for i in range(len(pos_e)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN, pos_e[i], 1, 0)  

    #---6-4---月球=the Moon---
    roll_m += 0.1# 假设月球每帧公转0.1pi
    pos_m_x = int(pos_e_x + size[1]//20*math.sin(roll_m))
    pos_m_y = int(pos_e_y + size[1]//20*math.cos(roll_m))
    pygame.draw.circle(screen, GREEN, (pos_m_x, pos_m_y), 5, 0)  

    #---月球的轨迹线---可要可不要---
    pos_mm.append((pos_m_x, pos_m_y))
    if len(pos_mm) > 255:
        pos_mm.pop(0)
    for i in range(len(pos_mm)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN ,pos_mm[i], 1, 0)  

    #---6-5---金星=the Venas---
    roll_v += 0.015# 假设金星每帧公转0.015pi
    pos_v_x = int(size[0]//2 + size[1]//3*math.sin(roll_v))
    pos_v_y = int(size[1]//2 + size[1]//3*math.cos(roll_v))
    pygame.draw.circle(screen, RED, (pos_v_x, pos_v_y), 20, 0)  

    #---金星的轨迹线---可要可不要---
    pos_v.append((pos_v_x, pos_v_y))
    if len(pos_v) > 255:
        pos_v.pop(0)
    for i in range(len(pos_v)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, (0,255,0), pos_v[i], 1, 0)  

    #---6-6---其他几个行星---缺点不是椭圆形轨道---
    # 3
    roll_3 += 0.03# 假设金星每帧公转0.03pi
    pos_3_x = int(size[0]//2 + size[1]//3.5*math.sin(roll_3))
    pos_3_y = int(size[1]//2 + size[1]//3.5*math.cos(roll_3))
    pygame.draw.circle(screen, WHITE,(pos_3_x, pos_3_y), 20, 0)  

    # 4
    roll_4 += 0.04# 假设金星每帧公转0.04pi
    pos_4_x = int(size[0]//2 + size[1]//4*math.sin(roll_4))
    pos_4_y = int(size[1]//2 + size[1]//4*math.cos(roll_4))
    pygame.draw.circle(screen, WHITE,(pos_4_x, pos_4_y), 20, 0)  

    # 5
    roll_5 += 0.05# 假设金星每帧公转0.05pi
    pos_5_x = int(size[0]//2 + size[1]//5*math.sin(roll_5))
    pos_5_y = int(size[1]//2 + size[1]//5*math.cos(roll_5))
    pygame.draw.circle(screen, WHITE, (pos_5_x, pos_5_y), 20, 0)
    # 6
    roll_6 += 0.06# 假设金星每帧公转0.06pi
    pos_6_x = int(size[0]//2 + size[1]//2.5*math.sin(roll_6))
    pos_6_y = int(size[1]//2 + size[1]//2.5*math.cos(roll_6))
    pygame.draw.circle(screen, WHITE,(pos_6_x, pos_6_y), 20, 0)  

    # 7
    roll_7 += 0.07# 假设金星每帧公转0.07pi
    pos_7_x = int(size[0]//2 + size[1]//4.5*math.sin(roll_7))
    pos_7_y = int(size[1]//2 + size[1]//4.5*math.cos(roll_7))
    pygame.draw.circle(screen, WHITE, (pos_7_x, pos_7_y), 20, 0)  

    # 8
    roll_8 += 0.08# 假设金星每帧公转0.08pi
    pos_8_x = int(size[0]//2 + size[1]//5.5*math.sin(roll_8))
    pos_8_y = int(size[1]//2 + size[1]//5.5*math.cos(roll_8))
    pygame.draw.circle(screen, WHITE, (pos_8_x, pos_8_y), 20, 0)  

    #刷新
    pygame.display.flip()
    #数值越大刷新越快,小球运动越快
    clock.tick(40)  

9.效果图:

10,适合收藏,慢慢逐行研究pygame的代码。

本文参考原文-http://bjbsair.com/2020-03-25/tech-info/6268/

1.太阳系

2.今天来模拟太阳系的运动的行星,用python3和pygame来制作。

3.第1步:

#---第1步---导出模块---
import pygame
import sys
import math
from pygame.locals import *

4.第2步:

#---第2步---游戏初始化---
pygame.init()

5.第3步:

#---第3步---定义颜色---
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

6.第4步:

#---第4步---定义窗口大小、标题名称、字体设置、创建时钟---
size = width, height = 2200, 1400
screen = pygame.display.set_mode(size)
pygame.display.set_caption("太阳-地球-月亮-金星等示意图")
#字体的初定义,注意英文就这样
myfont=pygame.font.Font(None,60)
#如果是中文,字体hwfs=华文仿宋字体,放在根目录下
#myfont=pygame.font.Font(‘hwfs.ttf‘,60)
#创建时钟对象 (可以控制游戏循环频率)---必须要---
clock = pygame.time.Clock()

=以上4步基本格式固定=

7.第5步:这里有列表定义,多个列表的定义和一行多次赋值,都是python的特点。

#---第5步---初始化相关定义---具体到各个游戏的定义---
#定义三个空列表
‘‘‘
pos_v=[]
pos_e = []
pos_mm = []
‘‘‘
#与上面的作用相同
pos_v=pos_e=pos_mm=[]
#金星、地球和月球等其他行星的公转过的角度
roll_v = roll_e = roll_m = 0
roll_3=roll_4=roll_5=roll_6=roll_7=roll_8=0  

#太阳的位置---相对固定---中心
#知识点:size是一行赋值法,相当于size=(width, height )的元组
#size[0]=width,size[1]=height
position = size[0]//2, size[1]//2

8.第6步:

#---第6步---游戏循环---
while True:
    #---6-1---首先---
    #---pygame的游戏循环必不可少的---个人建议和喜欢---
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
    #背景颜色为黑色
    screen.fill(BLACK)
    #屏幕上显示文字设置
    textImage=myfont.render("Sun=yellow,Earth=blue,Moon=green,Venas=red",True,GREEN)
    #在屏幕坐标为100和100的位置显示
    screen.blit(textImage,(100,100))  

    #---6-2---画太阳sun的大小、位置、颜色设置,60的大小较合适---
    pygame.draw.circle(screen, YELLOW, position, 60, 0)  

    #---6-3---地球=the Earth---
    roll_e += 0.01# 假设地球每帧公转0.01pi
    pos_e_x = int(size[0]//2 + size[1]//6*math.sin(roll_e))
    pos_e_y = int(size[1]//2 + size[1]//6*math.cos(roll_e))
    pygame.draw.circle(screen, BLUE, (pos_e_x, pos_e_y), 15, 0)  

    #---地球的轨迹线---可要可不要---
    pos_e.append((pos_e_x, pos_e_y))
    if len(pos_e) > 255:
        pos_e.pop(0)
    for i in range(len(pos_e)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN, pos_e[i], 1, 0)  

    #---6-4---月球=the Moon---
    roll_m += 0.1# 假设月球每帧公转0.1pi
    pos_m_x = int(pos_e_x + size[1]//20*math.sin(roll_m))
    pos_m_y = int(pos_e_y + size[1]//20*math.cos(roll_m))
    pygame.draw.circle(screen, GREEN, (pos_m_x, pos_m_y), 5, 0)  

    #---月球的轨迹线---可要可不要---
    pos_mm.append((pos_m_x, pos_m_y))
    if len(pos_mm) > 255:
        pos_mm.pop(0)
    for i in range(len(pos_mm)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN ,pos_mm[i], 1, 0)  

    #---6-5---金星=the Venas---
    roll_v += 0.015# 假设金星每帧公转0.015pi
    pos_v_x = int(size[0]//2 + size[1]//3*math.sin(roll_v))
    pos_v_y = int(size[1]//2 + size[1]//3*math.cos(roll_v))
    pygame.draw.circle(screen, RED, (pos_v_x, pos_v_y), 20, 0)  

    #---金星的轨迹线---可要可不要---
    pos_v.append((pos_v_x, pos_v_y))
    if len(pos_v) > 255:
        pos_v.pop(0)
    for i in range(len(pos_v)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, (0,255,0), pos_v[i], 1, 0)  

    #---6-6---其他几个行星---缺点不是椭圆形轨道---
    # 3
    roll_3 += 0.03# 假设金星每帧公转0.03pi
    pos_3_x = int(size[0]//2 + size[1]//3.5*math.sin(roll_3))
    pos_3_y = int(size[1]//2 + size[1]//3.5*math.cos(roll_3))
    pygame.draw.circle(screen, WHITE,(pos_3_x, pos_3_y), 20, 0)  

    # 4
    roll_4 += 0.04# 假设金星每帧公转0.04pi
    pos_4_x = int(size[0]//2 + size[1]//4*math.sin(roll_4))
    pos_4_y = int(size[1]//2 + size[1]//4*math.cos(roll_4))
    pygame.draw.circle(screen, WHITE,(pos_4_x, pos_4_y), 20, 0)  

    # 5
    roll_5 += 0.05# 假设金星每帧公转0.05pi
    pos_5_x = int(size[0]//2 + size[1]//5*math.sin(roll_5))
    pos_5_y = int(size[1]//2 + size[1]//5*math.cos(roll_5))
    pygame.draw.circle(screen, WHITE, (pos_5_x, pos_5_y), 20, 0)
    # 6
    roll_6 += 0.06# 假设金星每帧公转0.06pi
    pos_6_x = int(size[0]//2 + size[1]//2.5*math.sin(roll_6))
    pos_6_y = int(size[1]//2 + size[1]//2.5*math.cos(roll_6))
    pygame.draw.circle(screen, WHITE,(pos_6_x, pos_6_y), 20, 0)  

    # 7
    roll_7 += 0.07# 假设金星每帧公转0.07pi
    pos_7_x = int(size[0]//2 + size[1]//4.5*math.sin(roll_7))
    pos_7_y = int(size[1]//2 + size[1]//4.5*math.cos(roll_7))
    pygame.draw.circle(screen, WHITE, (pos_7_x, pos_7_y), 20, 0)  

    # 8
    roll_8 += 0.08# 假设金星每帧公转0.08pi
    pos_8_x = int(size[0]//2 + size[1]//5.5*math.sin(roll_8))
    pos_8_y = int(size[1]//2 + size[1]//5.5*math.cos(roll_8))
    pygame.draw.circle(screen, WHITE, (pos_8_x, pos_8_y), 20, 0)  

    #刷新
    pygame.display.flip()
    #数值越大刷新越快,小球运动越快
    clock.tick(40)  

9.效果图:

10,适合收藏,慢慢逐行研究pygame的代码。

本文参考原文-http://bjbsair.com/2020-03-25/tech-info/6268/

1.太阳系

2.今天来模拟太阳系的运动的行星,用python3和pygame来制作。

3.第1步:

#---第1步---导出模块---
import pygame
import sys
import math
from pygame.locals import *

4.第2步:

#---第2步---游戏初始化---
pygame.init()

5.第3步:

#---第3步---定义颜色---
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

6.第4步:

#---第4步---定义窗口大小、标题名称、字体设置、创建时钟---
size = width, height = 2200, 1400
screen = pygame.display.set_mode(size)
pygame.display.set_caption("太阳-地球-月亮-金星等示意图")
#字体的初定义,注意英文就这样
myfont=pygame.font.Font(None,60)
#如果是中文,字体hwfs=华文仿宋字体,放在根目录下
#myfont=pygame.font.Font(‘hwfs.ttf‘,60)
#创建时钟对象 (可以控制游戏循环频率)---必须要---
clock = pygame.time.Clock()

=以上4步基本格式固定=

7.第5步:这里有列表定义,多个列表的定义和一行多次赋值,都是python的特点。

#---第5步---初始化相关定义---具体到各个游戏的定义---
#定义三个空列表
‘‘‘
pos_v=[]
pos_e = []
pos_mm = []
‘‘‘
#与上面的作用相同
pos_v=pos_e=pos_mm=[]
#金星、地球和月球等其他行星的公转过的角度
roll_v = roll_e = roll_m = 0
roll_3=roll_4=roll_5=roll_6=roll_7=roll_8=0  

#太阳的位置---相对固定---中心
#知识点:size是一行赋值法,相当于size=(width, height )的元组
#size[0]=width,size[1]=height
position = size[0]//2, size[1]//2

8.第6步:

#---第6步---游戏循环---
while True:
    #---6-1---首先---
    #---pygame的游戏循环必不可少的---个人建议和喜欢---
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
    #背景颜色为黑色
    screen.fill(BLACK)
    #屏幕上显示文字设置
    textImage=myfont.render("Sun=yellow,Earth=blue,Moon=green,Venas=red",True,GREEN)
    #在屏幕坐标为100和100的位置显示
    screen.blit(textImage,(100,100))  

    #---6-2---画太阳sun的大小、位置、颜色设置,60的大小较合适---
    pygame.draw.circle(screen, YELLOW, position, 60, 0)  

    #---6-3---地球=the Earth---
    roll_e += 0.01# 假设地球每帧公转0.01pi
    pos_e_x = int(size[0]//2 + size[1]//6*math.sin(roll_e))
    pos_e_y = int(size[1]//2 + size[1]//6*math.cos(roll_e))
    pygame.draw.circle(screen, BLUE, (pos_e_x, pos_e_y), 15, 0)  

    #---地球的轨迹线---可要可不要---
    pos_e.append((pos_e_x, pos_e_y))
    if len(pos_e) > 255:
        pos_e.pop(0)
    for i in range(len(pos_e)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN, pos_e[i], 1, 0)  

    #---6-4---月球=the Moon---
    roll_m += 0.1# 假设月球每帧公转0.1pi
    pos_m_x = int(pos_e_x + size[1]//20*math.sin(roll_m))
    pos_m_y = int(pos_e_y + size[1]//20*math.cos(roll_m))
    pygame.draw.circle(screen, GREEN, (pos_m_x, pos_m_y), 5, 0)  

    #---月球的轨迹线---可要可不要---
    pos_mm.append((pos_m_x, pos_m_y))
    if len(pos_mm) > 255:
        pos_mm.pop(0)
    for i in range(len(pos_mm)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, GREEN ,pos_mm[i], 1, 0)  

    #---6-5---金星=the Venas---
    roll_v += 0.015# 假设金星每帧公转0.015pi
    pos_v_x = int(size[0]//2 + size[1]//3*math.sin(roll_v))
    pos_v_y = int(size[1]//2 + size[1]//3*math.cos(roll_v))
    pygame.draw.circle(screen, RED, (pos_v_x, pos_v_y), 20, 0)  

    #---金星的轨迹线---可要可不要---
    pos_v.append((pos_v_x, pos_v_y))
    if len(pos_v) > 255:
        pos_v.pop(0)
    for i in range(len(pos_v)):
        #轨迹线为绿色=green=0,255,0
        pygame.draw.circle(screen, (0,255,0), pos_v[i], 1, 0)  

    #---6-6---其他几个行星---缺点不是椭圆形轨道---
    # 3
    roll_3 += 0.03# 假设金星每帧公转0.03pi
    pos_3_x = int(size[0]//2 + size[1]//3.5*math.sin(roll_3))
    pos_3_y = int(size[1]//2 + size[1]//3.5*math.cos(roll_3))
    pygame.draw.circle(screen, WHITE,(pos_3_x, pos_3_y), 20, 0)  

    # 4
    roll_4 += 0.04# 假设金星每帧公转0.04pi
    pos_4_x = int(size[0]//2 + size[1]//4*math.sin(roll_4))
    pos_4_y = int(size[1]//2 + size[1]//4*math.cos(roll_4))
    pygame.draw.circle(screen, WHITE,(pos_4_x, pos_4_y), 20, 0)  

    # 5
    roll_5 += 0.05# 假设金星每帧公转0.05pi
    pos_5_x = int(size[0]//2 + size[1]//5*math.sin(roll_5))
    pos_5_y = int(size[1]//2 + size[1]//5*math.cos(roll_5))
    pygame.draw.circle(screen, WHITE, (pos_5_x, pos_5_y), 20, 0)
    # 6
    roll_6 += 0.06# 假设金星每帧公转0.06pi
    pos_6_x = int(size[0]//2 + size[1]//2.5*math.sin(roll_6))
    pos_6_y = int(size[1]//2 + size[1]//2.5*math.cos(roll_6))
    pygame.draw.circle(screen, WHITE,(pos_6_x, pos_6_y), 20, 0)  

    # 7
    roll_7 += 0.07# 假设金星每帧公转0.07pi
    pos_7_x = int(size[0]//2 + size[1]//4.5*math.sin(roll_7))
    pos_7_y = int(size[1]//2 + size[1]//4.5*math.cos(roll_7))
    pygame.draw.circle(screen, WHITE, (pos_7_x, pos_7_y), 20, 0)  

    # 8
    roll_8 += 0.08# 假设金星每帧公转0.08pi
    pos_8_x = int(size[0]//2 + size[1]//5.5*math.sin(roll_8))
    pos_8_y = int(size[1]//2 + size[1]//5.5*math.cos(roll_8))
    pygame.draw.circle(screen, WHITE, (pos_8_x, pos_8_y), 20, 0)  

    #刷新
    pygame.display.flip()
    #数值越大刷新越快,小球运动越快
    clock.tick(40)  

9.效果图:

10,适合收藏,慢慢逐行研究pygame的代码。

原文地址:https://www.cnblogs.com/lihanlin/p/12571862.html

时间: 2024-08-29 08:33:35

python的pygame模拟太阳-地球-月亮-金星等动态示意图代码分析的相关文章

python get post模拟请求

1.使用get方式时,url类似如下格式: [html] view plaincopy index.jsp?id=100&op=bind GET报问头如下: [html] view plaincopy GET /sn/index.php?sn=123&n=asa HTTP/1.1 Accept: */* Accept-Language: zh-cn host: localhost Content-Type: application/x-www-form-urlencoded Content

第一章 python自学开始——python和pygame的安装

买了一本书,但是书太坑没有正确的安装方法,所以我只能自己上官网死啃英文.软件都下载好了,才突然意识到为什么我不搜一下视频和博客呢.以下为自己摸索的一些方法. 官网入口 python官网:https://www.python.org/ pygame官网:http://pygame.org/news(不知道为什么这个官网网址总是带一个news,害得我以为这是个子网页) 下载方式 如果要下载最新版本的适合电脑配置的python,只要downloads直接选择即可. python 3和python 2并

Python实现网站模拟登陆

一.实验简介 1.1 基本介绍 本实验中我们将通过分析登陆流程并使用 Python 实现模拟登陆到一个实验提供的网站,在实验过程中将学习并实践 Python 的网络编程,Python 实现模拟登陆的方法,使用 Firefox 抓包分析插件分析网络数据包等知识. 模拟登录可以帮助用户自动化完成很多操作,在不同场合下有不同的用处,无论是自动化一些日常的繁琐操作还是用于爬虫都是一项很实用的技能.本课程通过 Firefox 和 Python 来实现,环境要求如下: Python 库:urllib, ur

Python使用mechanize模拟浏览器

Python使用mechanize模拟浏览器 之前我使用自带的urllib2模拟浏览器去进行訪问网页等操作,非常多站点都会出错误,还会返回乱码.之后使用了 mechanize模拟浏览器,这些情况都没出现过,真的非常好用.这里向大家推荐一下. mechanize是对urllib2的部分功能的替换,能够更好的模拟浏览器行为,在web訪问控制方面做得更全面. 首先从安装開始吧,以ubuntu系统为例: python 绝大部分第三方软件包.都是标准安装方式,从官网下载之后.解压到一个文件夹内,然后在这个

测试开发Python培训:模拟登录新浪微博-技术篇

测试开发Python培训:模拟登录新浪微博-技术篇 一般一个初学者项目的起点就是登陆功能的自动化,而面临的项目不同实现的技术难度是不一样的,poptest在做测试开发培训中更加关注技术难点,掌握技术实现思路,提高动手能力.这里通过大家都能接触到的系统新浪微博,作为案例. 模拟登录功能比较简单,很多人在学习自动化的时候都会以登陆来作为自己的第一个学习案例,有点像开发语言中第一段代码都是helloworld!一样.登陆简单的模拟登录,直接发post请求就OK,很容易实现. 这里用新浪微博,就是技术实

Python _X __all__ 模拟 导入'私有'变量 及其注意点和实例

开头是下划线的变量(如_X): 在特定的情况下,可以吧下划线放在变量名的签名(如_X)可以防止客户端使用from *语句导入模块名时,把其中的那些变量名复制出去:但是下划线不是'私有'声明:仍可以使用其他导入形式看见并且修改这类变量例如使用import __all__(语句) 此外也可以在模块顶层把变量名的字符串列表赋值给变量__all__以达到类似_X命名惯例的隐藏效果:使用此功能,from*语句只会把列在__all__列表中的这些变量名复制出来 __all__是指出要复制的变量名,而_X时指

python用socket模拟post请求

今天用python的socket模拟了下post请求,通过这个实例可以更加了解python中socket的使用,以及http请求和socket的相互关系等知识. #coding=utf-8 import socket if __name__=="__main__": s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("www.xxxxx.com",80)) #pyhon 字符串很长时可以

Python 操作文件模拟SQL语句功能

Python操作文件模拟SQL语句功能 一.需求 当然此表你在文件存储时可以这样表示 1,Alex Li,22,13651054608,IT,2013-04-01 现需要对这个员工信息文件,实现增删改查操作 1. 可进行模糊查询,语法至少支持下面3种: 1. select name,age from staff_table where age > 22 2. select * from staff_table where dept = "IT" 3. select * from

用Python和Pygame写游戏-从入门到精通(py2exe篇)

这次不是直接讲解下去,而是谈一下如何把我们写的游戏做成一个exe文件,这样一来,用户不需要安装python就可以玩了.扫清了游戏发布一大障碍啊! perl,python,java等编程语言,非常好用,语法优美,功能强大:VB啥的,功能上编写的时候总有那么点不舒服的地方(个人见解),可是用户和受众极多,一个很大的原因就是:VB是微软提供的,可以很方便的编译(伪?)生成exe文件.有了exe,所有的Windows都能方便的使用了. 我们不能指望用户在玩我们的游戏之前都安装一个python和pygam