游戏介绍:
一款单人版的思聪吃热狗游戏,你可以自己调节思聪的位置, 移动时会消耗能量 10, 游戏中吃到热狗分数加1, 能量加20,最后的目标就是称霸世界咯, 吃掉 所有的热狗即游戏胜利。王思聪能量消耗完毕即游戏失败。
如何开始:
玩家:键盘方向键↑↓←→控制王思聪的移动。
游戏目标: 不断的吃掉热狗,不断的强大起来吧!
游戏素材
游戏要求: 1. 游戏背景可以为黑色或者其他图片(自定义即可); 2. 王思聪可以上下左右移动, 热狗只能向左移动, 当移动到最左边时, 穿越屏幕,到达最右端,继续向左移动。 3. 王思聪默认能量值(power)为200,每移动一次消耗能量值10, 当吃到一个热 狗, 能量值增加20。 4. 王思聪只有一个, 而热狗的个数是随机的(10~40个之间)。 5. 当热狗被彻底消灭掉或者思聪毫无能量值时,游戏结束。
**游戏进阶要求:**能否实现一个双人版吃热狗游戏?
在这大千世界里,现在的所有物种都是通过自身群体间的相互竞争进化而生存下来,
物竞天择这个词就是这样的由来,生存环境发生了变化,要么尝试地去改变去适应
它,要么就被无情地淘汰,最终陈列在博物馆内。我们的祖先经过几亿年的演变,
适应了一个又一个的极端环境,才有了现在的我们,他们的坚韧体现的淋漓尽致。 emmmmmm,我貌似扯远了…双人游戏很好的诠释了物竞天择这一点,
我们刚开始是两个人物, 一个玩家是你, 一个玩家是王思聪,周围都是仅剩无 几的热狗食物,为了生存两个玩家必须争夺仅有的热狗。 当热狗吃完时, 谁的得 分高, 谁就是最终的赢家。 或者其中一方玩家体力消耗仅剩0, 另外一方玩家即 为赢家。
玩家1:键盘方向键↑↓←→控制移动。
玩家2:键盘WSAD控制控制移动。
代码部分:
import random
import pygame
import sys
from pygame.locals import *
width = 800
height = 500
pygame.init()
screen = pygame.display.set_mode([width, height])
pygame.display.set_caption('恰热狗')
# 定义窗口标题
background = pygame.image.load('./bj.jpg').convert()
# 导入背景
RegouImg = pygame.image.load("./regou.jpg").convert_alpha()
WscImg = pygame.image.load('./wsc.jpg').convert_alpha()
igImg = pygame.image.load('./wsc2.jpg').convert_alpha()
# 背景音乐
pygame.mixer.music.load('./yinpin.mp3')
pygame.mixer.music.play(loops=0, start=0.0)
p1count = 0
p2count = 0
font = pygame.font.SysFont("arial", 40)
p1score = font.render("score %d" % p1count, True, (255, 255, 255))
p2score = font.render("score %d" % p2count, True, (255, 255, 255))
w_width = WscImg.get_width() - 5
w_height = WscImg.get_height() - 5
y_width = RegouImg.get_width() - 5
y_height = RegouImg.get_height() - 5
z_width = igImg.get_width() - 5
z_height = igImg.get_height() - 5
fpsClock = pygame.time.Clock()
class Wangsicong:
def __init__(self): # Wsc的属性(生命值,所在横坐标,所在纵坐标)
self.p1power = 200
self.x = random.randint(0, (width - w_width))
self.y = random.randint(0, (height - w_height))
# Wsc移动的方向,方法均为随机
def move(self, new_x, new_y):
# 判断移动后是否超出边界
if new_x < 0:
self.x = 800
elif new_x > width:
self.x = 0
else:
# 不越界则移动wsc的位置
self.x = new_x
if new_y < 0:
self.y = 500
elif new_y > height:
self.y = 0
else:
self.y = new_y
self.p1power -= 20
def eat(self):
self.p1power += 20 # Wsc吃热狗,生命加20
if self.p1power > 200:
self.p1power = 200 # wsc的体力上限
class IG:
def __init__(self): # 玩家2的属性(生命值,所在横坐标,所在纵坐标)
self.p2power = 200
self.x = random.randint(0, (width - z_width))
self.y = random.randint(0, (height - z_height))
# 玩家二移动的方向,方法均为随机
def move(self, new_x, new_y):
# 判断移动后是否超出边界
if new_x < 0:
self.x = 800
elif new_x > width:
self.x = 0
else:
# 不越界则移动玩家2的位置
self.x = new_x
if new_y < 0:
self.y = 500
elif new_y > height:
self.y = 0
else:
self.y = new_y
self.p2power -= 20
def eat(self):
self.p2power += 20 # 玩家2吃热狗,生命加20
if self.p2power > 200:
self.p2power = 200 # 玩家2的体力上限
class Regou:
# 定义热狗的属性,只有横坐标与纵坐标属性
def __init__(self):
# 随机生成热狗的坐标
self.x = random.randint(0, width - y_width)
self.y = random.randint(0, height - y_height)
def move(self):
new_x = self.x + random.choice([-10])
if new_x < 0:
self.x = width
else:
self.x = new_x
# 示例化
Wsc = Wangsicong()
ig = IG()
regou = [Regou() for i in range(random.randint(10, 40))] # 生成随机只热狗
while True: # 操作窗口
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == KEYDOWN:
#将玩家一的操作导入到电脑中
if event.key == pygame.K_LEFT:
Wsc.move(Wsc.x - 10, Wsc.y)
if event.key == pygame.K_RIGHT:
Wsc.move(Wsc.x + 10, Wsc.y)
if event.key == pygame.K_UP:
Wsc.move(Wsc.x, Wsc.y - 10)
if event.key == pygame.K_DOWN:
Wsc.move(Wsc.x, Wsc.y + 10)
if event.type == KEYDOWN:
#将玩家二的操作导入至电脑中
if event.key == pygame.K_a:
ig.move(ig.x - 10, ig.y)
if event.key == pygame.K_d:
ig.move(ig.x + 10, ig.y)
if event.key == pygame.K_w:
ig.move(ig.x, ig.y - 10)
if event.key == pygame.K_s:
ig.move(ig.x, ig.y + 10)
p1power = font.render("p1power %d" % Wsc.p1power, True, (255, 255, 255))
p2power = font.render("p2power %d" % ig.p2power, True, (255, 255, 255))
screen.blit(background, (0, 0)) # 更新背景
screen.blit(p1score, (600, 20)) # 更新p1分数
screen.blit(p1power, (600, 50)) # 更新p1体力
screen.blit(p2power, (0, 50)) # 更新p2体力
screen.blit(p2score, (0, 20)) # 更新p1分数
for i in regou:
screen.blit(RegouImg, (i.x, i.y))
i.move()
screen.blit(WscImg, (Wsc.x, Wsc.y))
if Wsc.p1power < 0 or ig.p2power < 0 or len(regou) == 0:
#判定玩家是否吃到热狗
print("Game Over")
sys.exit()
for i in regou:
screen.blit(RegouImg, (i.x, i.y))
i.move()
screen.blit(igImg, (ig.x, ig.y))
if Wsc.p1power < 0 or ig.p2power < 0 or len(regou) == 0:
print("Game Over")
sys.exit()
for i in regou:
if ((Wsc.x < i.x + y_width) and (Wsc.x + w_width > i.x) and (Wsc.y < i.y + y_height) and (
w_height + Wsc.y > i.y)):
Wsc.eat()
regou.remove(i)
p1count = p1count + 1
p1score = font.render("score %d" % p1count, True, (255, 255, 255))
#更新玩家一的分数并且显示在屏幕上
for i in regou:
if ((ig.x < i.x + y_width) and (ig.x + w_width > i.x) and (ig.y < i.y + y_height) and (
w_height + ig.y > i.y)):
ig.eat()
regou.remove(i)
p2count = p2count + 1
p2score = font.render("score %d" % p2count, True, (255, 255, 255))
#更新玩家二的分数,并且显示在屏幕上
pygame.display.update()
fpsClock.tick(10)
代码部分:
import random
def ChangeLine():
A = []
B = []
C = []
for i in range(random.randint(5,10)):
A.append(random.randint(0,10))
for item in A:
if item % 2 != 0:
B.append(item)
else:
C.append(item)
A = C + B
print(A)
ChangeLine()
代码部分:
import itertools
def PhoneKeyboard():
b = []
d = []
e = []
i = 0
p = 0
keyboard = {"2": "abc", "3": "def", "4": "ghi", "5": "jkl", "6": "mno", "7": "pqrs", "8": "tuv", "9": "wxyz"}
a = keyboard.get(str(input("请输入第一个数:")))
for item in range(len(a)):
b.append(a[i])
i += 1
c = keyboard.get(str(input("请输入第二个数:")))
for item in range(len(c)):
d.append(c[p])
p += 1
print(b)
print(d)
print(list(itertools.product(b,d)))
PhoneKeyboard()