python版《羊了个羊》游戏开发第一天

Python小型项目实战教学课《羊了个羊》

一、项目开发大纲(初级)

版本1.0:基本开发

课次

内容

技术

第一天

基本游戏地图数据

面向过程

第二天

鼠标点击和移动

面向对象

第三天

消除

设计模式:单例模式

第四天

完整游戏过程

架构:Model-View-ViewModel

第五天

多层重叠的方块

数据结构

(计算机考研数据结构课程)

第六天

多层重叠的方块

数据结构

(计算机考研数据结构课程)

二、项目开发大纲(中级、高级)

版本2.0:游戏道具

技术:设计模式

版本3.0:单机版改为网络版多人联机游戏

技术:网络编程、多人对战

版本4.0:JS改写,发布小程序

版本5.0:安卓编程、苹果ios编程,发布APP

版本6.0:小程序、APP,接入广告联盟,收费赚钱!

版本7.0:游戏道具,接入支付接口,道具收费!

版本8.0:多层重叠方块的高级实现方法

第一天功能描述:

    地图数据绘制,包含空格。

第一天截图:

版本1.0,第一天源码:

import pygame

import random



#导入exit方法

from sys import exit



#定义函数

#  当用户点击关闭,关闭窗口

def handleEvent():

    global events

    for e in pygame.event.get():

        if e.type==pygame.QUIT:

            pygame.quit()

            sys.exit()

            

#地图初始化 2023.7.5 lyy

def gameMapInit():

    for i in range(9):

        for j in range(7):

            # 0 无效值;    1-6 有效值

            matrix[i][j]=random.randint(0, 6)



#- ---------------------------------------------------- main



#初始化pygame

pygame.init()



back=pygame.image.load('images/background.png')

cardBox=pygame.image.load('images/box.png')



c1=pygame.image.load('images/card1.png')

c2=pygame.image.load('images/card2.png')

c3=pygame.image.load('images/card3.png')

c4=pygame.image.load('images/card4.png')

c5=pygame.image.load('images/card5.png')

c6=pygame.image.load('images/card6.png')



cardAll=[c1,c2,c3,c4,c5,c6]



#设置窗口大小

canvas=pygame.display.set_mode((400,700))



#数据 MVVM模式

# 纯数据  MODEL

matrix = [[0 for i in range(8)] for i in range(10)]



#设置窗口标题

pygame.display.set_caption('羊了个羊')



gameMapInit()



print(matrix)





#循环语句

#重复绘制画面,重复检测用户是否点击了关闭按钮

while True:

    #绘制背景

    canvas.blit(back,(0,0))

    #绘制卡牌空槽

    canvas.blit(cardBox,(20,550))

    #循环语句 输出多行多列图片

    x=25

    y=50

    for i in range(9):

        x=25

        for j in range(7):

                    card_id= matrix[i][j]

                    if card_id!=0:

                        canvas.blit(cardAll[ card_id-1 ],(x,y))

                    x=x+50

        y=y+50

    #调用函数,当用户点击关闭,关闭窗口

    handleEvent()

    #刷新画面

    pygame.display.update()

    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/67029.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV 中的光流 (C++/Python)

什么是光流? 光流是一项视频中两个连续帧之间每像素运动估计的任务。基本上,光流任务意味着计算像素的位移矢量作为两个相邻图像之间的对象位移差。光流的主要思想是估计物体由其运动或相机运动引起的位移矢量。 理论基础 假设我们有一个灰度图像——具有像素强度的矩阵。我…

JavaSE【继承和多态】(1)(重点:初始化、pretected封装、组合)

一、继承 继承 (inheritance) 机制 :是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性 的基础上进行扩展,增加新功能 ,这样产生新的类,称 派生类 。 继承呈现了面向对象程序设计的层次结…

在vue项目使用数据可视化 echarts ,柱状图、折线图、饼状图使用示例详解及属性详解

官网地址:Apache ECharts ​一、下载插件并在页面中引入 npm install echarts --save 页面导入: import * as echarts from echarts 全局导入: main.js 中,导入并注册到全局 import echarts from echarts Vue.prototype.$echart…

Flume原理剖析

一、介绍 Flume是一个高可用、高可靠,分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制&…

日常开发中Git命令指北

Git基本操作 创建化仓库 mkdir 目录 cd 目录 git init配置本地仓库 # 配置用户名,邮箱 git config user.name "cxf" git config user.email "1969612859qq.com" # 查看本地配置(小写的 L) git config -l # 重置配置&a…

【SpringCloud】RabbitMQ基础

1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应,…

【locust】使用locust + boomer实现对接口的压测

目录 背景 环境安装 脚本编写 master slave节点(golang/boomer) 问题 资料获取方法 背景 很早之前,考虑单机执行能力,使用locust做过公司短信网关的压测工作,后来发现了一个golang版本的locust,性能…

将程序添加到右键菜单快速启动

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 效果如下 以 Windows Terminal 为例 打开注册表编辑器:按下 Win R 键,输入 regedit,然后按回车键打开注册表编辑器。 在注册表编辑器中导航到以下路径: HKE…

LabVIEW对并行机器人结构进行建模仿真

LabVIEW对并行机器人结构进行建模仿真 为了对复杂机器人结构的数学模型进行建模、搜索、动画和验证,在工业机器人动态行为实验室中,设计并实现了具有五个自由度的单臂型机器人。在研究台上可以区分以下元素:带有直流电机和编码器的机器人;稳…

新的里程碑!纪念正月十六工作室博客总访问量突破两百万

时值盛夏,清风徐徐,不觉间我们的博客访问量又迈入了新的里程碑——访问量突破两百万! 总访问量突破百万: 个人成就: 记得上次突破重大里程碑还是去年夏天,那时我们重修岳阳楼,追往忆&#…

【2.1】Java微服务:详解Hystrix

✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 💞当前专栏: Java微服务 ✨特色专栏: 知识分享 &am…

考研408 | 【计算机网络】 数据链路层

导图: 数据链路层概念: 结点:主机、路由器 链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。 数据链路:网络中两个结点之间的逻辑通道&#xff0…

【Archaius技术专题】「Netflix原生态」动态化配置服务之微服务配置组件变色龙

前提介绍 如果要设计开发一套微服务基础架构,参数化配置是一个非常重要的点,而Netflix也开源了一个叫变色龙Archaius的配置中心客户端,而且Archaius可以说是比其他客户端具备更多生产级特性,也更灵活。*在NetflixOSS微服务技术栈…

uni-app使用vue语法进行开发注意事项

目录 uni-app 项目目录结构 生命周期 路由 路由跳转 页面栈 条件编译 文本渲染 样式渲染 条件渲染 遍历渲染 事件处理 事件修饰符 uni-app 项目目录结构 组件/标签 使用(类似)小程序 语法/结构 使用vue 具体项目目录如下: 生命…

intelJ IDEA\PHPStorm \WebStorm\PyCharm 通过ssh连接远程Mysql\Postgresql等数据库

最容易出错的地方是在general面板下的host,不应该填真实的host地址,而应该填localhost或者127.0.0.1 具体操作步骤见下图

opencv基础49-图像轮廓02-矩特征cv2.moments()->(形状分析、物体检测、图像识别、匹配)

矩特征(Moments Features)是用于图像分析和模式识别的一种特征表示方法,用来描述图像的形状、几何特征和统计信息。矩特征可以用于识别图像中的对象、检测形状以及进行图像分类等任务。 矩特征通过计算图像像素的高阶矩来提取特征。这些矩可以…

[OnWork.Tools]系列 05-系统工具

简介 系统工具主要是将Window常用工具的快捷启动的集合 双击快速启动 计算器,记事本,截图,画图工具 控制面板,服务管理,关闭显示器,关机 启动文件夹,我的电脑,管理工具 右键菜单 添加快捷方式到桌面

React diff 根据相对位置的 diff 算法

文章目录 diff 算法没有 key 时的diff通过 key 的 diff查找需要移动的节点移动节点添加新元素移除不存在的元素缺点 diff 算法 没有 key 时的diff 根据新旧列表的长度进行 diff 公共长度相同的部分直接patch新列表长度>旧列表长度则添加,否则删除 function pa…

WPF实战项目十一(API篇):待办事项功能api接口

1、新建ToDoController.cs继承基础控制器BaseApiController,但是一般业务代码不写在控制器内,业务代码写在Service,先新建统一返回值格式ApiResponse.cs: public class ApiResponse{public ApiResponse(bool status, string mess…

git 报错 protocol ‘https‘ is not supported解决

报错原因:选择不了其他分支代码,甚至都看不到其他分支,我这边解决了两次报错,情况如下: 第一种报错: idea中刷新分支报错如下: Fetch Failed protocol https is not supported 话不多说&#…