私は驚くべきコーダーではないと言って始めるので、コードはきわめてきれいではありません。私は本当に基本的なバージョンのヘビに取り組んでいます。現在、私はヘビと食べ物の衝突について困っています。 (x、yはヘビと食糧、食糧は食糧)。衝突検出は、現在は機能していないばかりで、何が間違っているのか分かりません。助けを前にありがとう。 できるだけシンプルにしておきましょう。私はまだそれらをどのように使用するかわからないので、クラスに参加したくありません。どのようにスネークゲームに衝突を組み込むことができますか?
編集:申し訳ありませんが、英語は母国語ではありません。コードは現在機能しています。食べ物との衝突後の衝突や食べ物の生成は機能しません。
import pygame
import sys
import random
import math
import time
pygame.init()
screen=pygame.display.set_mode((500,500))
red=(255,0,0)
blue=(0,0,255)
green=(0,255,0)
black=(0,0,0)
block1=1
block2=0
count=0
screen.fill(black)
randStart=random.randint(0,25)
x=randStart*20
y=randStart*20
xd=20
yd=0
foodx=random.randint(0,480)
foody=random.randint(0,480)
snakecol=pygame.Rect(x,y,20,20)
foodcol=pygame.Rect(foodx,foody,20,20)
done=False
while not done:
screen.fill(black)
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
#controls
if block1==1:
if(pygame.key.get_pressed()[pygame.K_a]):
yd=0
xd=-20
block1=0
block2=1
if block1==1:
if(pygame.key.get_pressed()[pygame.K_d]):
yd=0
xd=20
block1=0
block2=1
if block2==1:
if(pygame.key.get_pressed()[pygame.K_w]):
xd=0
yd=-20
block1=1
block2=0
if block2==1:
if(pygame.key.get_pressed()[pygame.K_s]):
xd=0
yd=20
block1=1
block2=0
#stop moving paddle
if x<-20:
x=500
if x>500:
x=-20
if y<-20:
y=500
if y>500:
y=-20
#food
if snakecol.colliderect(foodcol):
foodx=random.randint(0,480)
foody=random.randint(0,480)
x=x+xd
y=y+yd
pygame.draw.rect(screen,(255,255,255),(foodx,foody,20,20),0)
pygame.draw.rect(screen,(255,255,255),(x,y,20,20),0)
pygame.display.flip()
time.sleep(0.4)
count+=1
pygame.quit()
あなたは「今はうまく機能していない」と述べています。どのように動作していないかを私たちに示すと、より良い応答を得ることができます。あなたがやっていることや期待していること、実際に起こっていることの例を教えてください。あなたがあなたに質問した努力が多ければ多いほど、あなたはあなたの答えを受け取るでしょう。また、Object Orientated Programmingを活用することで、デバッグ/テスト時間を100倍以上節約できます。 –
私の悪い、本当に今ストレス。私は質問を編集しました。 –
あなたは私のアドバイスに全く従っていないと思いますが、あなたは衝突が機能していないことを再確認しました。どのように機能していないのですか?何x、yの場所がヘビであったのか、そして衝突が起こったと思われるときの食べ物(私はヘビと食べ物は同じであると仮定しますが、それを述べています)。衝突が失敗したとき何が起こったのですか?何が起こるはずですか?あなたが助けるために実行できる小さなサンプルを提供する必要があります。ストレスを感じることは大丈夫ですが、多くの人があなたのためにあなたのプログラム全体をデバッグしたいと思っているわけではありません。 –