首先做这个项目之前得清楚需要的材料和这个项目的结构,我自己感觉这个游戏项目的难点就在于钩子摆动的问题,它需要利用到三角函数来实现出来,我利用了pygame.transform.rotate()方法来实现钩字摇摆的问题,用sin和cos的方法来计算出钩字旋转的角度,对于目前的自己来说这就是最难的部分!这个项目我一共写了6个部分完成的,接下来就是代码部分!

项目管理代码

import mining
import pygame
from pygame.locals import *
import timeclass A():def __init__(self):# pygame初始化  否则找不到字体文件pygame.init()def main(screen):# 创建窗口# screen = pygame.display.set_mode((1400, 900))# 创建背景图片background = pygame.image.load("./material/dabeijing.png")# 创建玩家人物对象miner = mining.Miner(screen)# # 创建管理石头对象manage_kuang = mining.Manage_kuang(screen)# 创建钩子对象crash = mining.Hook(screen)music = mining.GameSound()music.playBackgroundMusic()while True:# 将背景贴到界面中screen.blit(background, (0, 0))# 调用人物的显示功能miner.display()# 调用钩子的显示功能crash.hook_display()# 调用钩子旋转功能crash.hook_rotate()# 钩子检测按键a = crash.control()if a:music.playHookSound()# 钩子移动功能crash.move()# 钩子越界检测crash.scope()crash.scope2()crash.scope3()# 检测钩子碰撞crash.pengzhuang(manage_kuang)# 将钩子和物体一起向回拉crash.move2()# 随机石头manage_kuang.random_fond()for fond1 in manage_kuang.fonds:fond1.display()# fond1.move()# 显示界面pygame.display.update()time.sleep(0.002)def one():# 创建窗口screen = pygame.display.set_mode((1400, 900), 0, 32)# 创建背景图片background1 = pygame.image.load("9999.png")# background = pygame.image.load("./material/dabeijing.png")while True:screen.blit(background1, (0, 0))# a = input()# if a == "a":#     breakfor event in pygame.event.get():print(event.type)# print(pygame.K_SPACE)# 判断是否是点击了退出按钮if event.type == 12:print("exit")exit()  # 让整个程序结束,return让   函数结束,break让循环结束elif event.type == 3:print(3333333333333333)return screenpygame.display.update()# breakscreen = one()
main(screen)

钩子碰撞

from math import sin, cos, pi
import pygame
from pygame.locals import *
import timeclass Hook(pygame.sprite.Sprite):"""钩子类"""def __init__(self, screen):pygame.sprite.Sprite.__init__(self)self.rawimage = pygame.image.load("./material/gouzi3.png")  # 原始图片self.image = self.rawimage  # 旋转后的图形,初始值就是原始图self.rect = self.rawimage.get_rect()  # 获取原始图形的矩形.# self.aaa = pygame.image.load("./material/钩子.png")  # 原始图片self.x = 1400self.y = 950self.screen = screenself.rect.topleft = [self.rect.x, self.rect.y]# 定义一个变量用来进行使self.a = Trueself.b = Falseself.c = Falseself.d = Falseself.num1 = Falseself.num2 = Trueself.hook_rotate_flag = Trueself.speed = 5# 转角self.corner = 0self.num = 2self.speed = []self.v = 10self.aaa = False# self.font = pygame.font.SysFont(" ", 40)  # 格式, 大小# 文本, 有没有抗锯齿, 颜色, 背景(可不写)# self.text_surface = self.font.render("***** ", True, (200, 255, 255))def hook_display(self):"""显示功能"""self.screen.blit(self.image, self.rect)# self.screen.blit(self.aaa, (700, 0))# self.screen.blit(self.text_surface, (self.rect.x, self.rect.y))def hook_rotate(self):"""旋转功能"""self.right_rotate()def detection(self):"""检测按键功能"""# 获取事件,比如按键等for event in pygame.event.get():# 判断是否是点击了退出按钮if event.type == QUIT:print("exit")exit()  # 让整个程序结束,return让函数结束,break让循环结束def right_rotate(self):"""旋转"""if self.a:if self.corner > -90:self.corner -= self.numself.image = pygame.transform.rotate(self.rawimage, self.corner)self.rect = self.image.get_rect()self.rect.x = self.x // 2 - self.rect.w // 2self.rect.y = self.y - 730 - self.rect.h // 2if self.corner == -90:self.num = -2self.corner = -88if self.corner >= 90:self.num = 2self.corner = 88self.rect.topleft = [self.rect.x, self.rect.y]self.speed = [-int(self.v * sin(self.corner * pi / 180)), -int(self.v * cos(self.corner * pi / 180))]def control(self):"""检测键盘,调用对应的功能"""# 获取事件,比如按键等for event in pygame.event.get():# 判断是否是点击了退出按钮if event.type == QUIT:print("exit")exit()  # 让整个程序结束,return让函数结束,break让循环结束# 判断连续按键,注意下面要使用if,不能使用elif,否则当一起按下2个键的时候,只能处理一个键,另外的那个不处理key = pygame.key.get_pressed()# 判断是否要发射子弹if key[K_SPACE]:print('space')self.a = Falseself.b = Truereturn Truedef move(self):# if self.corner > 0:if self.b:self.rect.x -= self.speed[0]self.rect.y -= self.speed[1]# print(self.rect.y, self.rect.x)self.rect.topleft = [self.rect.x, self.rect.y]if self.rect.x < 0:self.c = Trueself.b = Falseself.aaa = Trueelif self.rect.x > 1330:self.d = Trueself.b = Falseself.aaa = Trueelif self.rect.y > 810:self.num1 = Trueself.b = Falseself.aaa = Truedef pengzhuang(self, stones):"""碰撞检测"""# 如果放钩子,则碰撞检测if self.aaa == False:for stone in stones.fonds:if pygame.sprite.collide_mask(self, stone):stone.a = Falseself.aaa = True  # 表示拉取钩子self.b = False# while True:stone.y = self.rect.ystone.x = self.rect.x# if self.move2():#     stone.fonds.remove(stone)# 如果碰到了一个黄金,则不再继续判断碰撞,意味着每次只获取一个黄金# return stoneself.obj = stone# 从列表中删除stones.fonds.remove(stone)breakdef move2(self):global stonesif self.aaa is True:self.rect.x += self.speed[0]self.rect.y += self.speed[1]self.rect.topleft = [self.rect.x, self.rect.y]try:if self.obj:self.obj.x += self.speed[0]self.obj.y += self.speed[1]self.obj.rect.topleft = [self.obj.x, self.obj.y]self.obj.screen.blit(self.obj.image, (self.obj.x, self.obj.y))print("-----黄金正在被拉取中---")except:print(123)# self.rect.x += self.speed[0]# self.rect.y += self.speed[1]print(222)if self.rect.y <= 150:self.a = Trueself.aaa = False  # 当已经成功的将黄金拉回来,则修改这个判断,表示下一次的放钩子self.obj = Noneprint("------黄金已经被收取成功--------")# return Truedef scope(self):if self.c:self.rect.x += self.speed[0]self.rect.y += self.speed[1]if self.rect.x >= 650:self.a = Trueself.c = Falsedef scope2(self):if self.d:self.rect.x += self.speed[0]self.rect.y += self.speed[1]if self.rect.x <= 650:self.a = Trueself.d = Falsedef scope3(self):if self.num1:self.rect.x += self.speed[0]self.rect.y += self.speed[1]if self.rect.y < 120:self.a = Trueself.num1 = Falsedef main():clock = pygame.time.Clock()# 创建窗口screen = pygame.display.set_mode((1400, 900))hook = Hook(screen)# 创建一个对象# enemy_plane = EnemyPlane2(screen)background = pygame.image.load("./material/背景.png")# stars = mineral.Manage_kuang(screen)while True:screen.blit(background, (0, 0))# screen.fill((0, 100, 255))# 显示钩子hook.hook_display()# 检测按键# hook.detection()# 旋转功能hook.hook_rotate()# 检测按键hook.control()# 移动功能hook.move()# hook.pengzhuang()# 越界检测hook.scope()hook.scope2()hook.scope3()# 调用目标# enemy_plane.display()# 显示界面pygame.display.update()# time.sleep(0.02)clock.tick(50)if __name__ == "__main__":main()# pygame.mouse.get_pressed()

分数代码

import mining
import pygame
from pygame.locals import *
import timeclass HeroPlane(pygame.sprite.Sprite):def __init__(self, screen):# 调用父类初始化方法# pygame.sprite.Sprite.__init__(self)super().__init__()# 窗口self.screen = screen# 一个玩家飞机图片self.image = pygame.image.load('./feiji/feiji.png')# 飞机矩形区域对象self.rect = self.image.get_rect()# 左上角坐标self.rect.topleft = [512 / 2 - 116 / 2, 600]def drawText(self, text, x, y, textHeight=30, fontColor=(255, 255, 255), backgroudColor=None):# 通过字体文件获得字体对象  参数1 字体文件 参数2 字体大小font_obj = pygame.font.Font('./feiji/baddf.ttf', textHeight)# 1文字  2是否抗锯齿 3文字颜色 4背景颜色text_obj = font_obj.render(text, True, fontColor, backgroudColor)  # 配置要显示的文字# 获得要显示的对象的recttext_rect = text_obj.get_rect()# 设置显示对象的坐标text_rect.topleft = (x, y)# 绘制字 到指定区域  参1是文字对象 参2 矩形对象self.screen.blit(text_obj, text_rect)

任务图形代码

import pygame
from pygame.locals import *
import time
# import randomclass Miner(object):"""人物类"""def __init__(self, screen):# 定义人物的位置self.x = 600self.y = 40# 定义玩家图片self.image = pygame.image.load("./material/renwu3.png")# 存储需要显示玩家的对象引用self.screen = screenself.speed = 1self.direction = "right"self.direction2 = "down"self.bombed_flag = Falseself.rect = self.image.get_rect()self.rect.topleft = [self.x, self.y]def display(self):"""显示玩家"""self.screen.blit(self.image, (self.x, self.y))def control(self):"""检测键盘,调用相对应的功能"""# 判断是否是点击了退出按钮for event in pygame.event.get():if event.type == QUIT:print("exit")exit()  # 让整个程序结束def auto_move(self):"""控制玩家人物的自由移动"""if self.bombed_flag is False:if self.direction2 == "down":self.y += self.speedif self.y > 60:self.direction2 = "up"elif self.direction2 == "up":self.y -= self.speedif self.y < 30:self.direction2 = "down"self.rect.topleft = [self.x, self.y]def main():# 创建界面screen = pygame.display.set_mode((1400, 900))# 创建背景图片background = pygame.image.load("./huang_jin_kuang_gong/Inkedsnipaste20181122_083528_LI.jpg")# 创建玩家人物对象miner = Miner(screen)while True:# 将背景贴到界面中screen.blit(background, (0, 0))# 调用玩家的显示功能miner.display()# 调用玩家的键盘检测功能miner.control()miner.auto_move()# 显示界面pygame.display.update()time.sleep(0.01)if __name__ == "__main__":main()

界面代码

import pygame
from pygame.locals import *
import time
# import randomclass A(object):"""界面类"""def __init__(self, screen):self.start = Trueself.over = Falseself.image1 = pygame.image.load("./黄金矿工/timg.png")# self.image2 = pygame.image.load("./feiji/gameover2.png")self.image3 = pygame.image.load("./黄金矿工/beijin.png")self.screen = screenself.flag = Falsedef display(self):if self.flag is False:if self.start:self.screen.blit(self.image1, (0, 0))else:self.screen.blit(self.image3, (0, 0))if self.over:self.screen.blit(self.image2, (0, 0))def b(self):key = pygame.key.get_pressed()if key[K_SPACE]:self.over = Truedef mouse_info(self):image = pygame.image.load("./黄金矿工/start.jpg").convert_alpha()image.blit(image, (0, 0))again_rect = image.get_rect()if pygame.mouse.get_pressed()[0]:# 获取鼠标坐标pos = pygame.mouse.get_pos()# 如果用户点击“开始游戏”if again_rect.left < pos[0] < again_rect.right and again_rect.top < pos[1] < again_rect.bottom:# 调用main函数,开始游戏# main()self.flag = Truedef main():# 初始化游戏pygame.init()# 创建一个窗口screen = pygame.display.set_mode((1400, 900))a = A(screen)while True:# 获取事件,比如按键等for event in pygame.event.get():# 判断是否是点击了退出按钮if event.type == QUIT:print("exit")exit()a.display()a.mouse_info()a.b()# 显示界面pygame.display.update()time.sleep(0.01)if __name__ == '__main__':main()

矿石代码

import pygame
from pygame.locals import *
import time
import randomclass Fond(pygame.sprite.Sprite):def __init__(self, screen, x, y):pygame.sprite.Sprite.__init__(self)# 定义石头默认显示的位置self.x = xself.y = yself.speed = 1  # 敌机移动速度self.speed2 = 10# 定义玩家图片self.image = pygame.image.load("./material/huangjin4.png")# 存储将来要显示的窗口对象引用self.screen = screenself.dic = "right"self.fenshu = 3000self.rect = self.image.get_rect()self.a = True# 定义一个变量来影响钩子的速度self.sudu = 1self.rect.topleft = [self.x, self.y]def display(self):"""显示石头:return:"""self.screen.blit(self.image, (self.x, self.y))self.rect.topleft = [self.x, self.y]def move(self):if self.a:if self.dic == "left":# self.y += self.speedself.x -= self.speed2if self.x <= 0:self.dic = "right"elif self.dic == "right":self.x += self.speed2if self.x >= 1200:self.dic = "left"self.rect.topleft = [self.x, self.y]class Mouse(pygame.sprite.Sprite):def __init__(self, screen, x, y):pygame.sprite.Sprite.__init__(self)# 定义玩家默认显示的位置self.x = xself.y = yself.speed = 1  # 敌机移动速度self.speed2 = 10# 定义玩家图片self.image = pygame.image.load("./material/huangjin4.png")# 存储将来要显示的窗口对象引用self.screen = screenself.dic = "left"self.fenshu = 8000self.rect = self.image.get_rect()# 定义一个变量来影响钩子的速度self.sudu = 1self.a = Trueself.rect.topleft = [self.x, self.y]def display(self):"""显示老鼠:return:"""self.screen.blit(self.image, (self.x, self.y))self.rect.topleft = [self.x, self.y]def move(self):if self.a:if self.dic == "left":# self.y += self.speedself.x -= self.speed2if self.x <= 0:self.dic = "right"elif self.dic == "right":self.x += self.speed2if self.x >= 1250:self.dic = "left"self.rect.topleft = [self.x, self.y]class Dog(pygame.sprite.Sprite):def __init__(self, screen, x, y):pygame.sprite.Sprite.__init__(self)# 定义玩家默认显示的位置self.x = xself.y = yself.speed = 1  # 敌机移动速度self.speed2 = 6# 定义玩家图片self.image = pygame.image.load("./material/huangjin4.png")# 存储将来要显示的窗口对象引用self.screen = screenself.dic = "left"self.fenshu = 30000self. sudu = 1self.rect = self.image.get_rect()self.rect.topleft = [self.x, self.y]# 定义一个变量来影响钩子的速度self.sudu = 30self.a = Truedef display(self):"""显示狗:return:"""self.screen.blit(self.image, (self.x, self.y))self.rect.topleft = [self.x, self.y]def move(self):if self.a:if self.dic == "left":# self.y += self.speedself.x -= self.speed2if self.x <= -50:self.dic = "right"elif self.dic == "right":self.x += self.speed2if self.x >= 1150:self.dic = "left"self.rect.topleft = [self.x, self.y]class Cat(pygame.sprite.Sprite):def __init__(self, screen, x, y):pygame.sprite.Sprite.__init__(self)# 定义玩家默认显示的位置self.x = xself.y = yself.speed = 1  # 敌机移动速度self.speed2 = 6# 定义图self.image = pygame.image.load("./tututu/shitou4.png")# 存储将来要显示的窗口对象引用self.screen = screenself.dic = "left"self.fenshu = 100000self.rect = self.image.get_rect()self.a = True  # 定义一个变量来影响钩子的速度self.sudu = 1self.rect.topleft = [self.x, self.y]def display(self):"""显示猫:return:"""self.screen.blit(self.image, (self.x, self.y))self.rect.topleft = [self.x, self.y]# def move(self):#     if self.a:#         if self.dic == "left":#             # self.y += self.speed#             self.x -= self.speed2#             if self.x <= 0:#                 self.dic = "right"#         elif self.dic == "right":#             self.x += self.speed2#             if self.x >= 1000:#                 self.dic = "left"#         self.rect.topleft = [self.x, self.y]class Manage_kuang(object):"""管理石头类"""def __init__(self, screen):self.screen = screenself.fonds = list()  # 存储所有的石头self.x_list1 = list()self.x_list2 = list()self.x_list3 = list()self.x_list4 = list()def random_fond(self):"""随机生成石头"""x = random.randint(200, 1200)y = random.randint(400, 500)if len(self.x_list1) < 1:fond = Fond(self.screen, x, y)self.fonds.append(fond)self.x_list1.append(x)if len(self.x_list1) < 3 and (x >= self.x_list1[-1]+300 or x <= self.x_list1[-1]-300):fond = Fond(self.screen, x, y)self.fonds.append(fond)self.x_list1.append(x)self.x_list1.sort()x1 = random.randint(200, 1200)y1 = random.randint(300, 700)if len(self.x_list2) < 1:mouse = Mouse(self.screen, x1, y1)self.fonds.append(mouse)self.x_list2.append(x1)elif len(self.x_list2) < 3 and (x1 >= self.x_list3[-1]+300 or x1 <= self.x_list3[-1]-300):mouse = Mouse(self.screen, x1, y1)self.fonds.append(mouse)self.x_list2.append(x1)self.x_list2.sort()x2 = random.randint(200, 1200)y2 = random.randint(500, 750)if len(self.x_list3) < 1:dog = Dog(self.screen, x2, y2)self.fonds.append(dog)self.x_list3.append(x2)elif len(self.x_list3) < 2 and (x2 >= self.x_list3[0]+300 or x2 <= self.x_list3[0]-300):dog = Dog(self.screen, x2, y2)self.fonds.append(dog)self.x_list3.append(x2)self.x_list3.sort()x3 = random.randint(200, 1100)y3 = random.randint(500, 700)if len(self.x_list4) < 1:cat = Cat(self.screen, x3, y3)self.fonds.append(cat)self.x_list4.append(x3)elif len(self.x_list4) < 1 and (x3 >= self.x_list3[-1]+300 or x3 <= self.x_list3[-1]-300):cat = Cat(self.screen, x3, y3)self.fonds.append(cat)self.x_list4.append(x3)self.x_list4.sort()def main():# 创建一个窗口screen = pygame.display.set_mode((1400, 900))# 创建一个背景图片background = pygame.image.load("./material/back.png")# 创建一个图片,当做飞机hero_plane = pygame.image.load("./feiji/hero1.png")# 显示石头manage_kuang = Manage_kuang(screen)while True:# 随机石头manage_kuang.random_fond()for fond1 in manage_kuang.fonds:fond1.display()fond1.move()for mouse1 in manage_kuang.mouse:mouse1.display()mouse1.move()for dog1 in manage_kuang.dogs:dog1.display()dog1.move()for cat1 in manage_kuang.cats:cat1.display()cat1.move()# 获取事件,比如按键等for event in pygame.event.get():# 判断是否是点击了退出按钮if event.type == QUIT:print("exit")exit()  # 让整个程序结束,return让函数结束,break让循环结束# 判断是否是按下了键elif event.type == KEYDOWN:# 检测按键是否是a或者leftif event.key == K_a or event.key == K_LEFT:print('left')# 检测按键是否是d或者rightelif event.key == K_d or event.key == K_RIGHT:print('right')# 检测按键是否是空格键elif event.key == K_SPACE:print('space')# 显示界面pygame.display.update()time.sleep(0.01)if __name__ == '__main__':main()

以上就是全部完整的项目代码,目前有一个BUG尚未解决,但是程序能正常运行。

黄金矿工-Python相关推荐

  1. LeetCode题解(1217):黄金矿工(Python)

    题目:原题链接(中等) 标签:回溯算法.深度优先搜索 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O((MN)2)O((MN)^2)O((MN)2) O(M×N)O(M×N) ...

  2. 用python程序玩黄金矿工——”指哪抓哪“

    博主视频演示链接:https://www.ixigua.com/7084987084129174029?logTag=f4d99c73a6993517417c 程序原理:获取钩子固定点的坐标和需要抓取 ...

  3. python小游戏之黄金矿工

    推荐一个黄金矿工游戏(py原创),你能玩一整天!↓ ↓ ↓ 首先定义一些要用到的变量及列表 变量\列表名 用途 gold 记录挖了多少黄金 times 每次挖金的数量 energy 体力值 # 黄金列 ...

  4. 黄金矿工游戏demo

    试玩地址:  http://www.adanghome.com/js_demo/13/ 请使用chrome.firefox或safari.ie的话,请大于ie8. 按空格键扔出钩子,按左右键控制矿工移 ...

  5. 2018级C语言大作业 - 黄金矿工

    黄金矿工 C语言作业 分享18级同学大一上学期用C语言实现的黄金矿工.分步骤代码.图片音乐素材.可执行程序可从百度网盘下载: 链接:https://pan.baidu.com/s/1xCy1l2-7Q ...

  6. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇

    马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...

  7. 你的记忆里有黄金矿工吗?

    黄金矿工是大概是我初中时候玩的游戏吧,记忆中的样子是一群人围在一个电脑傍边,两人一组,输了就换下一组,虽然它不上现在游戏的丰富的游戏内容.但是就是让人欲罢不能,成为一款经典! Java游戏项目黄金矿工 ...

  8. 项目二 黄金矿工 1

    黄金矿工 第一部分 1 绘制窗口 2 背景绘制 3 红线绘制 4 线的延长和收回 6 金块绘制 7 闪动问题解决 8 抓取判定与返回 9 添加多个金块 10 解决金块消失的bug 11 创建石块类 第 ...

  9. Java练手小游戏---黄金矿工

    你玩过4399曾经最火的黄金矿工小游戏吗,黄金矿工小游戏是一款休闲娱乐的一个挖宝游戏,在游戏中地下会有许多的宝藏,你得想办法把它们都挖出来,作为矿工的你,对你来说是轻车熟路的,能不能挖到宝,看你抓取的 ...

  10. 【小游戏】2D游戏黄金矿工GoldMiner(关卡模式)

    难度系数: ★★★☆☆ 游戏玩法: 黄金矿工,在恰当的时机点击屏幕放出钩子捡金块 项目简介: 功能完善,关卡模式,适合初中级练手学习 本文内容: 简单记录一下主要代码逻辑 转向机钩子的逻辑设定 1.钩 ...

最新文章

  1. Nature子刊:精胺介导稻瘟病菌侵染水稻叶片的新机制!
  2. MVC的增删改和Razor
  3. 报告称企业部署Windows 10比此前版本更快
  4. MySQL - 体系结构初探
  5. ASP.NET 安全认证(二)——灵活运用deny与allow 及保护.htm等文件
  6. IO流--buffer
  7. 江苏省计算机分级考试试题,江苏省计算机等级考试基础知识考题.doc
  8. DockOne微信分享(一三一):Juice——一种基于MesosFramework的任务云框架
  9. jsp 内置对象 登录 cookie + session
  10. Eclipse配置jstl标准标签库详解
  11. 数据库安全问题?这里有10个最常见的
  12. tomcat和idea都占用了8080_详解IDEA 启动tomcat 端口占用原因以及解决方法( 使用debug模式)...
  13. 论文_毕业设计复现机器学习模型案例大本营(收藏)
  14. Mybatis多参数查询与列表查询不同方式实现
  15. VS code入门笔记(一)常用标签介绍
  16. Linux 返回根目录
  17. 梦想贩卖机v2-1.069
  18. 和金融男谈恋爱 vs 和程序员谈恋爱
  19. UOS系统下安装软件打不开的解决方法
  20. Intel GPA 参数

热门文章

  1. http://www.cnblogs.com/freeliver54/p/3725979.html
  2. NVIDIA Jetson之OTA远程升级Jetpack
  3. go-项目配置govendor【详细教程】
  4. 迅为iTOP-4418开发板最新资料及例程
  5. 关于 安装完MathType 后 Microsoft Word出现 53号错误 的解决方法
  6. Anaconda, Spyder更新导致Spyder环境奔溃
  7. QT 之QPainter画点
  8. 科学道德与学风-2021雨课堂答案-第10章
  9. 根据两点的经纬度求方位角和距离,等
  10. 局域网即时通讯软件_无线局域网中,安卓手机和电脑的资源如何实现互传互访?...