【问题标题】:Trying to program a simple game, ideas for mouse control and random element尝试编写一个简单的游戏,鼠标控制和随机元素的想法
【发布时间】:2014-07-31 03:05:13
【问题描述】:

我正在用 Python 编写一个游戏,它向用户展示了许多方格,其中一个是获胜方格。但是,我不知道如何让方块响应点击,以及如何每次将获胜方块隐藏在不同的位置。到目前为止,这是我的代码:

# Import library
import pygame
# Initialise game engine
pygame.init()
# Examples
black = (0, 0, 0)
white = (255, 255, 255)
green = (0, 255, 0)
red = (255, 0, 0)
blue = (0, 0, 255)
# Screen dimensions
size=[700,500]
screen=pygame.display.set_mode(size)

pygame.display.set_caption("Lewis Tough - Find The Gold")
pi=3.141592653
done=False
clock=pygame.time.Clock()
font=pygame.font.Font("C:/Windows/Fonts/TCM_____.ttf", 50)
while done==False:
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        done=True
#all evt processing above here

#start of game logic
#end of game logic

#start of drawing
screen.fill(white)
pygame.draw.rect(screen,green,[20,20,50,50],2)
pygame.draw.rect(screen,green,[70,70,50,50],2)
pygame.draw.rect(screen,green,[20,70,50,50],2)
pygame.draw.rect(screen,green,[70,20,50,50],2)
pygame.draw.rect(screen,green,[120,20,50,50],2)
pygame.draw.rect(screen,green,[170,70,50,50],2)
pygame.draw.rect(screen,green,[120,70,50,50],2)
pygame.draw.rect(screen,green,[170,20,50,50],2)
#breakafter8
pygame.draw.rect(screen,green,[120,120,50,50],2)
pygame.draw.rect(screen,green,[170,170,50,50],2)
pygame.draw.rect(screen,green,[120,170,50,50],2)
pygame.draw.rect(screen,green,[170,120,50,50],2)
pygame.draw.rect(screen,green,[20,120,50,50],2)
pygame.draw.rect(screen,green,[70,170,50,50],2)
pygame.draw.rect(screen,green,[20,170,50,50],2)
pygame.draw.rect(screen,green,[70,120,50,50],2)
#sec3
pygame.draw.rect(screen,green,[220,20,50,50],2)
pygame.draw.rect(screen,green,[270,70,50,50],2)
pygame.draw.rect(screen,green,[220,70,50,50],2)
pygame.draw.rect(screen,green,[270,20,50,50],2)
pygame.draw.rect(screen,green,[320,20,50,50],2)
pygame.draw.rect(screen,green,[370,70,50,50],2)
pygame.draw.rect(screen,green,[320,70,50,50],2)
pygame.draw.rect(screen,green,[370,20,50,50],2)
#sec4
pygame.draw.rect(screen,green,[320,120,50,50],2)
pygame.draw.rect(screen,green,[370,170,50,50],2)
pygame.draw.rect(screen,green,[320,170,50,50],2)
pygame.draw.rect(screen,green,[370,120,50,50],2)
pygame.draw.rect(screen,green,[220,120,50,50],2)
pygame.draw.rect(screen,green,[270,170,50,50],2)
pygame.draw.rect(screen,green,[220,170,50,50],2)
pygame.draw.rect(screen,green,[270,120,50,50],2)
#next half
pygame.draw.rect(screen,green,[20,220,50,50],2)
pygame.draw.rect(screen,green,[70,270,50,50],2)
pygame.draw.rect(screen,green,[20,270,50,50],2)
pygame.draw.rect(screen,green,[70,220,50,50],2)
pygame.draw.rect(screen,green,[120,220,50,50],2)
pygame.draw.rect(screen,green,[170,270,50,50],2)
pygame.draw.rect(screen,green,[120,270,50,50],2)
pygame.draw.rect(screen,green,[170,220,50,50],2)
#breakafter8
pygame.draw.rect(screen,green,[120,320,50,50],2)
pygame.draw.rect(screen,green,[170,370,50,50],2)
pygame.draw.rect(screen,green,[120,370,50,50],2)
pygame.draw.rect(screen,green,[170,320,50,50],2)
pygame.draw.rect(screen,green,[20,320,50,50],2)
pygame.draw.rect(screen,green,[70,370,50,50],2)
pygame.draw.rect(screen,green,[20,370,50,50],2)
pygame.draw.rect(screen,green,[70,320,50,50],2)
#sec3
pygame.draw.rect(screen,green,[220,220,50,50],2)
pygame.draw.rect(screen,green,[270,270,50,50],2)
pygame.draw.rect(screen,green,[220,270,50,50],2)
pygame.draw.rect(screen,green,[270,220,50,50],2)
pygame.draw.rect(screen,green,[320,220,50,50],2)
pygame.draw.rect(screen,green,[370,270,50,50],2)
pygame.draw.rect(screen,green,[320,270,50,50],2)
pygame.draw.rect(screen,green,[370,220,50,50],2)
#sec4
pygame.draw.rect(screen,green,[320,320,50,50],2)
pygame.draw.rect(screen,green,[370,370,50,50],2)
pygame.draw.rect(screen,green,[320,370,50,50],2)
pygame.draw.rect(screen,green,[370,320,50,50],2)
pygame.draw.rect(screen,green,[220,320,50,50],2)
pygame.draw.rect(screen,green,[270,370,50,50],2)
pygame.draw.rect(screen,green,[220,370,50,50],2)
pygame.draw.rect(screen,green,[270,320,50,50],2)
#start of text

text=font.render("Welcome to Find the Gold!", True, black)
screen.blit(text, [100,425])

score = 0
texta = font.render("Score:"+str(score), True, black)
screen.blit(texta,[480,50])



pygame.display.flip()


#end of drawing


clock.tick(20)

pygame.quit()

有人有什么想法吗?

非常感谢!

【问题讨论】:

  • 首先...您可能想创建一个循环来帮助您绘制这些图块,这样代码的可读性会更高。

标签: python random


【解决方案1】:

我强烈推荐几件事。

  1. 阅读 making games with python & pygame. 它介绍了典型的 python/pygame 游戏应该喜欢什么,并解释了你在这个问题中需要的有用的东西。 (诸如 event.coords、event.type == MOUSEDOWN、具有坐标列表、pygame.Rect 对象等)此外,它是免费和开源的!

  2. 打开交互式 shell 并输入“import this”。说真的,可读性确实很重要。而且您的代码不可读。然后,阅读PEP-8 并使您的代码可读。

  3. 这 65 行 pygame.draw.rect() 可以用不到 10 行编写好的 for 循环替换。

  4. 不要告诉您的计算机一遍又一遍地绘制矩形,而是使用数据类型指定矩形的位置。具体来说,有一个 pygame.Rect 对象的列表。这些可以一一编写(不推荐),或者您可以使用以下方式生成它们:

    for row in range(number_of_rows):
        for column in range(number_of_columns):
            width = 50
            height = 50
            x = column * width + 20
            y = column * height + 20
            all_rects.append(pygame.Rect(x, y, width, height))
    

    (绝对推荐)

  5. 查看对象和类。 This 看起来像是一个不错的教程来解释它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 2012-12-23
    • 1970-01-01
    • 2022-06-23
    相关资源
    最近更新 更多