Python游戏代码大全(python游戏程序代码)

http://www.itjxue.com  2023-04-13 19:30  来源:未知  点击次数: 

6 个值得玩味的 Python 代码

先选取了 6 个自己认为值得玩味的 python代码,希望对正在学习 python 的你有所帮助。

1、类有两个方法,一个是 new,一个是 init,有什么区别,哪个会先执行呢?

运行结果如下:

再来看另一个例子

运行结果如下:

这里给出官方的解释: init 作用是类实例进行初始化,第一个参数为 self,代表对象本身,可以没有返回值链带。 new 则是返回一个新的类的实例,第一个参数是 cls 代表该类本身,必须有返回值。很明显,类先实例化才能产能对象,显然是 new 先执行,然后再 init ,实际上,只要 new 返回的是类本身的实例,它会自动调用 init 进行初始化。但是有例外,如果 new 返回的是其他类的实例,则它不会调用当前类的 init 。下面我们分别输出下对象 a 和对象 b 的类型:

可以看出,a 是 test 类的一个对象,而 b 就是 object 的对象。

2、map 函数返回的对象

map()函数第一个参数是 fun,第二个参数是一般是 list,第三个参数可以写 list,也可以不写,作用就是对列表中 list 的每个元素顺序调用函数 fun 。

有没有发现,第二次输出 b 中的元素时,发现变成空了。原因是 map() 函数返回的是一个迭代器,并用对返回结果使用了 yield,这样做的目的在于节省内隐裂存。 举个例子:

执行结果为:

这里如果不用 yield,那么在列表中的元素非常大时,将会全部装入内存,这是非常浪费内存的,同时也会降低效率。

3、正则表达式中 compile 是否多此一举?

比如现在有个需求,对于文本 中国 ,用正则匹配出标签里面的“中国”,其中 class 的类名是不确定的。有两种方法,代码如下:

这里为什么要用 compile 多写两行代码呢? 原因是 compile 将正则灶唤闭表达式编译成一个对象,加快速度,并重复使用。

4、[[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]

5、一行代码将字符串 "-" 插入到 "abcdefg"中每个字符的中间

这里也建议多使用 os.path.join() 来拼接操作系统的文件路径。

6、zip 函数

zip() 函数在运算时,会以一个或多个序列(可迭代对象)做为参数,返回一个元组的列表。同时将这些序列中并排的元素配对。zip() 参数可以接受任何类型的序列,同时也可以有两个以上的参数;当传入参数的长度不同时,zip 能自动以最短序列长度为准进行截取,获得元组。

python火柴人打架代码?

# 定拆手义一个火柴人类

class MatchstickMan:

# 初始化函数,用于设置火柴人的初始值

def __init__(self, name, health, attack):

self.name = name

self.health = health

self.attack = attack

# 定义一个函数,用于旅羡嫌让火柴人攻派念击其他火柴人

def attack_other(self, other):

# 如果对方的血量大于攻击力,则扣除对方的血量,否则将对方的血量设为 0

if other.health self.attack:

other.health -= self.attack

else:

other.health = 0

# 创建两个火柴人对象

player1 = MatchstickMan("player1", 10, 3)

player2 = MatchstickMan("player2", 10, 3)

# 让 player1 攻击 player2,打击 player2 的血量

player1.attack_other(player2)

# 打印 player2 的剩余血量

print(player2.health) # 输出:7

python有趣的编程代码

class?Point:

??row=0

??col=0

??def?__init__(self,?row,?col):

????self.row=row

????self.col=col

??def?copy(self):

????return?Point(row=self.row,?col=self.col)

#初始框架

import?pygame

import?random

#初始化

pygame.init()

W=800

H=600

ROW=30

COL=40

size=(W,H)

window=pygame.display.set_mode(size)

pygame.display.set_caption('贪吃蛇')

bg_color=(255,255,255)

snake_color=(200,200,200)

head=Point(row=int(ROW/2),?col=int(COL/2))

head_color=(0,128,128)

snakes=[

??Point(row=head.row,?col=head.col+1),

??Point(row=head.row,?col=head.col+2),

??Point(row=head.row,?col=head.col+3)

]

#生成食物

def?gen_food():

??while?1:

????pos=Point(row=random.randint(0,ROW-1),?col=random.randint(0,COL-1))

????#

????is_coll=False

????#是否跟蛇碰上了

????if?head.row==pos.row?and?head.col==pos.col:

??????is_coll=True

????#蛇身子

????for?snake?in?snakes:

??????if?snake.row==pos.row?and?snake.col==pos.col:

????????is_coll=True

??????昌乎袜??break

????if?not?is_coll:

???耐激???break

??return?pos

#定义坐标

food=gen_food()

food_color=(255,255,0)

direct='left'???????#left,right,up,down

#

def?rect(point,?color):

??cell_width=W/COL

??cell_height=H/ROW

??left=point.col*cell_width

??top=point.row*cell_height

??pygame.draw.rect(

????window,?color,

????(left,?top,?cell_width,?cell_height)

??)

??pass

#游戏循环

quit=True

clock=pygame.time.Clock()

while?quit:

??#处理事件

??for?event?in?pygame.event.get():

????if?event.type==pygame.QUIT:

??????quit=False

????elif?event.type==pygame.KEYDOWN:

??????if?event.key==273?or?event.key==119:

????????if?direct=='left'?or?direct=='right':

??????????direct='up'

??????elif?event.key==274?or?event.key==115:

????????if?direct?==?'left'?or?direct?==?'right':

????顷帆??????direct='down'

??????elif?event.key==276?or?event.key==97:

????????if?direct?==?'up'?or?direct?==?'down':

??????????direct='left'

??????elif?event.key==275?or?event.key==100:

????????if?direct?==?'up'?or?direct?==?'down':

??????????direct='right'

??#吃东西

??eat=(head.row==food.row?and?head.col==food.col)

??#重新产生食物

??if?eat:

????food?=?gen_food()

??#处理身子

??#1.把原来的头,插入到snakes的头上

??snakes.insert(0,?head.copy())

??#2.把snakes的最后一个删掉

??if?not?eat:

????snakes.pop()

??#移动

??if?direct=='left':

????head.col-=1

??elif?direct=='right':

????head.col+=1

??elif?direct=='up':

????head.row-=1

??elif?direct=='down':

????head.row+=1

??#检测

??dead=False

??#1.撞墙

??if?head.col0?or?head.row0?or?head.col=COL?or?head.row=ROW:

????dead=True

??#2.撞自己

??for?snake?in?snakes:

????if?head.col==snake.col?and?head.row==snake.row:

??????dead=True

??????break

??if?dead:

????print('死了')

????quit=False

??#渲染——画出来

??#背景

??pygame.draw.rect(window,?bg_color,?(0,0,W,H))

??#蛇头

??for?snake?in?snakes:

????rect(snake,?snake_color)

??rect(head,?head_color)

??rect(food,?food_color)

??#

??pygame.display.flip()

??#设置帧频(速度)

??clock.tick(8)

#收尾工作

这是一个简易版贪吃蛇的代码,虽然结构简单,但是该有的功能都是完整的,可玩性也不错

《外星人入侵》的python完整代码?

项目名如标题,在《python编程:从入门到实践》里有完整详细的说明,网上也能查到源码,这里只是在重复这种程序

不过学编程,借鉴模仿很重要,即使抄轮子也得抄个像模像样才行,抄到即是学到。

进入铅盯正题:

游戏很简单,就是一个打飞机类型的游戏,以下代码将实现游戏的主程序,飞船的基本操作等。

注:这里提醒新上手的萌新,python的代码不要随便复制粘贴!

不要随便复制粘贴!

不要随便复制粘贴!

python的缩进很严格,复制粘贴后一定要注意格式是否正确,否则会报出异常:

IndentationError: unexpected indent

未知的缩差亏进错误

当出现此提示时,要检查一下哪里的缩进出现了问题,小段的代码还好,大段的代码就呵呵了

注意下载好的文件后缀名为.whl

然后新建一个文件夹,名字叫alien_invasion,将下载好的模块放在此文件夹下,

然后你要新建以下文件:

1.?????alien_invasion.py 游戏主程序

2.?????game_functions.py 存放游戏函数

3.?????bullet.py 子弹模块

4.?????settings.py 游戏设置模块

5.?????ship.py 飞船模块

然后新建images文件夹存放飞船素材。

这些会让我们实现启动游戏,飞船的显示与移动,以及开火功能。

为避免文章冗~长,这里贴一段主程序代码,其它代码下周见(偷懒)。

alien_invasion.py

#!usr/bin/env python3

#_*_ coding:utf-8 _*_

#此模块是游戏的主程序

import sys

import game_functions as gf #导入game_functions文件,并指定了别名gf

import pygame

from settings import Settings

from ship import Ship

from pygame.sprite import Group

def run_game():

# 初始化游戏并创建一个屏幕对象

pygame.init() #pygame的init函数,用于创建一个游戏对象

#把Setting类实例化

ai_settings = Settings()

#显示游戏窗口并设置其大小

screen = pygame.display.set_mode(

(ai_settings.screen_width,ai_settings.screen_height))

#设置窗口标题

pygame.display.set_caption("Alien Invasion")?

# 把Ship类实例化,用于创建飞船

ship = Ship(ai_settings,screen)

#存储子弹的编组

bullets = Group()

#开始游戏的主循环

while True:

#用于响应鼠标,键盘事件

gf.check_events(ai_settings,screen,ship,bullets)

#更新飞槐庆和船在屏幕的位置

ship.update()

#更新子弹位置并删除消失的子弹

gf.update_bullets(bullets)

#用于更新屏幕背景色,更新飞船,子弹等

gf.update_screen(ai_settings,screen,ship,bullets)

run_game() #运行游戏

请用PYTHON编一个小游戏,如五子棋,连连看,贪吃蛇,扫雷,计算器等等

#!/usr/bin/python

from Tkinter import *

import random

class snake(Frame):

????????def __init__(self, master=None):

?宴和改???????????????Frame.__init__(self, master)

????????????????self.body = [(0,0)]

????????????????self.bodyid = []

????????????????self.food = [ -1, -1 ]

????????????????self.foodid = -1

????????????????self.gridcount = 10

????????????????self.size = 500

????????????????self.di = 3

????????????????self.speed = 500

????????????????self.top = self.winfo_toplevel()

????????????????self.top.resizable(False, False)

????????????????self.grid()

????????????????self.canvas = Canvas(self)

????????????????self.canvas.grid()

????????????????self.canvas.config(width=self.size, height=self.size,relief=RIDGE)

????????????????self.drawgrid()

????????????????s = self.size/self.gridcount

????????????????id = self.canvas.create_rectangle(self.body[0][0]*s,self.body[0][1]*s,

????????????????????????(self.body[0][0]+1)*s, (self.body[0][1]+1)*s, fill="yellow")

????????????????self.bodyid.insert(0, id)

????????????????self.bind_all("KeyRelease", self.keyrelease)

????????????????self.drawfood()

????????????????self.after(self.speed, self.drawsnake)

????????def drawgrid(self):

????????????????s = self.size/self.gridcount

????????????????for i in range(0, self.gridcount+1):

????????????????????????self.canvas.create_line(i*s, 0, i*s, self.size)

????????????????????????self.canvas.create_line(0, i*s, self.size, i*s)

????????def drawsnake(self):

????????????????s = self.size/self.gridcount

????????????????head = self.body[0]

????????????????new = [head[0], head[1]]

????????????????if self.di == 1:

????????????????????????new[1] = (head[1]-1) % self.gridcount

????????????????elif self.di == 2:

????????????????????????new[0] = (head[0]+1) % self.gridcount

????????????????elif self.di == 3:

????????????????????????new[1] = (head[1]+1) % self.gridcount

????????????????else:

????????????????????????new[0] = (head[0]-1) % self.gridcount

????????????????next = ( new[0], new[1] )

????????????????if next in self.body:

????????????????????????exit()

????????????????elif next == (self.food[0], self.food[1]):

????????????????????????self.body.insert(0, next)

??????????????????????晌判??self.bodyid.insert(0, self.foodid)

????????????????????????self.drawfood()

????????????????else:

????????????????????????tail = self.body.pop()

????????????????????????id = self.bodyid.pop()

????????????????????????self.canvas.move(id, (next[0]-tail[0])*s, (next[1]-tail[1])*s)

?????????????棚和???????????self.body.insert(0, next)

????????????????????????self.bodyid.insert(0, id)

????????????????self.after(self.speed, self.drawsnake)

????????def drawfood(self):

????????????????s = self.size/self.gridcount

????????????????x = random.randrange(0, self.gridcount)

????????????????y = random.randrange(0, self.gridcount)

????????????????while (x, y) in self.body:

????????????????????????x = random.randrange(0, self.gridcount)

????????????????????????y = random.randrange(0, self.gridcount)

????????????????id = self.canvas.create_rectangle(x*s,y*s, (x+1)*s, (y+1)*s, fill="yellow")

????????????????self.food[0] = x

????????????????self.food[1] = y

????????????????self.foodid = id

????????def keyrelease(self, event):

????????????????if event.keysym == "Up" and self.di != 3:

????????????????????????self.di = 1

????????????????elif event.keysym == "Right" and self.di !=4:

????????????????????????self.di = 2

????????????????elif event.keysym == "Down" and self.di != 1:

????????????????????????self.di = 3

????????????????elif event.keysym == "Left" and self.di != 2:

????????????????????????self.di = 4

app = snake()

app.master.title("Greedy Snake")

app.mainloop()

贪食蛇

100行Python代码,轻松完成贪吃蛇小游戏?

你是想让我们向你提问题?你这个放错地方了,应该发布到自己的博客或论坛上面才对

(责任编辑:IT教学网)

更多