Python: Tạo một game hai người chơi đơn giản bằng Turtle-Python


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Kết quả

Điều kiện tiên quyết: Lập trình Turtle bằng Python

Trò chơi có tên TurtleMove mà chúng ta sẽ tạo sau đây về cơ bản là một trò chơi dựa trên sự may rủi. Trong trò chơi này hai người chơi (Đỏ & Xanh), sử dụng (đối tượng) rùa của riêng họ để chơi trò chơi.

Cách chơi

Trò chơi được chơi trong lưới được xác định trước có một số ranh giới.

  • Cả hai người chơi di chuyển con rùa trong một khoảng cách đơn vị.
  • Bây giờ cả hai người chơi lật đồng xu:
  • 1) nếu HEAD thì rẽ phải
  • 2) nếu không thì rẽ trái
  • 3) lặp lại các bước 1 và 2 cho đến khi cả hai con rùa nằm trong ranh giới

Triển khai bằng Turtle Python

  • Đầu tiên, một đối tượng màn hình con rùa được tạo cho ranh giới lưới.
  • Bây giờ hai con rùa (Đỏ & Xanh) được tạo ra, mỗi người chơi một con.
  • Cả hai con rùa được di chuyển một khoảng cách đơn vị bằng cách sử dụng phương thức turtle_obj.osystem(50).
  • Sử dụng random.randrange(0, 2) tức là 0 thì rẽ trái còn 1 thì rẽ bên phải.
  • Sau mỗi lần di chuyển, vị trí của mỗi con rùa được kiểm tra, nếu con rùa nào vượt qua ranh giới thì con rùa đó thua cuộc chơi.

Dưới đây là code thực hiện

import random
import turtle

# hàm kiểm tra xem con rùa đã chạm
# mép của cửa sổ
def isInScreen(win, turt):
  # lấy điểm cuối của màn hình
  leftBound = -win.window_width() / 2
  rightBound = win.window_width() / 2
  topBound = win.window_height() / 2
  bottomBound = -win.window_height() / 2

  # lấy vị trí hiện thời của rùa
  turtleX = turt.xcor()
  turtleY = turt.ycor()

  # biến dùng để lưu trạng thái còn trong màn hình hay không
  stillIn = True

  # kiểm tra xem rùa còn trong màn hình hay không
  if turtleX > rightBound or turtleX < leftBound:
    stillIn = False
  if turtleY > topBound or turtleY < bottomBound:
    stillIn = False

  # trả về kết quả kiểm tra
  return stillIn

# hàm kiểm tra xem 2 con rùa có
# vị trí khác nhau hay không
def sameposition(Red, Blue):
  if Red.pos() == Blue.pos():
    return False
  else:
    return True

# hàm điều khiển chương trình
def main():
  # tạo màn hình
  wn = turtle.Screen()

  # tạo rùa đỏ
  Red = turtle.Turtle()

  # thiết lập màu đỏ cho rùa đỏ
  Red.pencolor("red")

  # thiết lập độ dày nét vẽ
  Red.pensize(5)

  # thiết lập dạng rùa
  Red.shape('turtle')
  pos = Red.pos()

  # tạo rùa xanh
  Blue = turtle.Turtle()

  # thiết lập màu blue cho rùa
  Blue.pencolor("blue")

  # thiết lập độ dày nét vẽ
  Blue.pensize(5)

  # thiết lập dạng rùa
  Blue.shape('turtle')

  # ẩn rùa xanh
  Blue.hideturtle()

  # không vẽ khi di chuyển rùa
  Blue.penup()

  # di chuyển rùa xanh đến vị trí cách
  # rùa đỏ 50 đơn vị
  Blue.goto(pos[0] + 50, pos[1])

  # hiện rùa xanh
  Blue.showturtle()

  # đặt rùa xuống
  Blue.pendown()

  # biến lưu trữ trạng thái rùa
  # đã chạm màn hình hay chưa
  mT = True
  jT = True

  # vòng lặp để thực hiện trò chơi
  while mT and jT and sameposition(Red, Blue):

    # tung đồng xu cho rùa đỏ
    coinRed = random.randrange(0, 2)

    # góc xoay cho rùa đỏ
    angleRed = 90

    # kiểm tra để xoay rùa đỏ
    if coinRed == 0:
      Red.left(angleRed)
    else:
      Red.right(angleRed)

      # tung đồng xu cho rùa xanh
    coinBlue = random.randrange(0, 2)

    # góc xoay của rùa
    angleBlue = 90

    # kiểm tra để xoay rùa xanh
    if coinBlue == 0:
      Blue.left(angleBlue)
    else:
      Blue.right(angleBlue)

      # rùa đỏ di chuyển
    Red.forward(50)

    # rùa xanh di chuyển
    Blue.forward(50)

    # kiểm tra xem có rùa nào chạm
    # màn hình không
    mT = isInScreen(wn, Blue)
    jT = isInScreen(wn, Red)

    # thiết lập màu vẽ cho cả 2 rùa là black
  Red.pencolor("black")
  Blue.pencolor("black")

  # kiểm tra xem rùa nào thắng
  if jT == True and mT == False:
    # đưa ra kết quả
    Red.write("Red Won", True, align="center",
              font=("arial", 15, "bold"))

  elif mT == True and jT == False:

    # đưa ra kết quả
    Blue.write("Blue Won", True, align="center",
               font=("arial", 15, "bold"))
  else:
    # đưa ra kết quả
    Red.write("Draw", True, align="center",
              font=("arial", 15, "bold"))
    Blue.write("Draw", True, align="center",
               font=("arial", 15, "bold"))

    # thoát chương trình
  wn.exitonclick()

# gọi hàm main
main()

Kết quả chạy thử:

Kết quả

» Tiếp: Tạo trò chơi bóng bàn (Pong) với Turtle-Python
« Trước: Vẽ mạng nhện 2 lớp với Turtle-Python
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!