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,第一天源码:

python 复制代码
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()
相关推荐
zh路西法9 分钟前
【Linux 串口通信】基于 C++ 多线程的同步/异步串口实现
linux·运维·c++·python
北暮城南10 分钟前
使用 Claude Code 高效实现图像边缘检测:多算法对比与工程实践
python·opencv·numpy·matplotlib·边缘检测·claude code
装不满的克莱因瓶11 分钟前
学习并掌握 LangChain 检索器的作用,实现让 LLM 动态调用知识库功能
人工智能·python·ai·langchain·llm·agent·智能体
charlie11451419112 分钟前
通用GUI编程技术——图形渲染实战(四十五)——D3D12资源与堆管理:从上传到驻留
开发语言·3d·图形渲染·win32
不会C语言的男孩13 分钟前
C++ Primer 第12章:动态内存
开发语言·c++
踏着七彩祥云的小丑36 分钟前
Go学习第1天:入门
开发语言·学习·golang·go
眠りたいです1 小时前
现代C++:C++17中的新库特性
开发语言·c++·c++20·c++17
devnullcoffee1 小时前
亚马逊 Buy Box 数据采集完全指南(2026):Python 实战 + Pangolinfo API
开发语言·python·亚马逊数据采集·亚马逊数据 api·pangolinfo api·亚马逊 buy box 数据·亚马逊数据采集软件
imDwAaY1 小时前
贝叶斯网络到粒子滤波Python算法实现 CS188 Proj4 学习笔记
网络·人工智能·笔记·python·学习·算法
sleven fung1 小时前
Whisper库
开发语言·人工智能·python·算法·ai·whisper