{ "cells": [ { "cell_type": "code", "execution_count": 5, "id": "d0e8ea8e-2315-49ed-aa07-86f37561d09d", "metadata": {}, "outputs": [], "source": [ "import pygame\n", "import random\n", "import math\n", "\n", "# init pygame\n", "pygame.init()\n", "\n", "# init the game's screen with certain size\n", "screen_width = 800\n", "screen_height = 600 \n", "screen = pygame.display.set_mode([screen_width, screen_height])\n", "\n", "pygame.display.set_caption(\"It's my game\")\n", "\n", "def snake(x, y, edge):\n", " pygame.draw.rect(screen, [255,205,0], [x,y,edge,edge])\n", " # pygame.display.update()\n", "\n", "def screen_update():\n", " pygame.display.update()\n", "\n", "def out_of_screen(x, y, w, h, edge):\n", " # *** write code\n", "\n", "def game_message(msg, x, y, color):\n", " font_style = pygame.font.SysFont(None, 50)\n", " mesg = font_style.render(msg, True, color)\n", " screen.blit(mesg, [x, y])\n", " screen_update()\n", "\n", "def bate(x, y, radius):\n", " pygame.draw.circle(screen, [0,120,120], [x, y], radius, 0)\n", "\n", "x1 = screen_width/2\n", "y1 = screen_height/2\n", "snake(x1, y1, 10)\n", "screen_update()\n", "\n", "step = 15\n", "edge = 10" ] }, { "cell_type": "code", "execution_count": 6, "id": "c2241ce6-607e-41e3-a5bd-231d0c519846", "metadata": {}, "outputs": [], "source": [ "# clock\n", "clock = pygame.time.Clock()\n", "\n", "xdiff = 0\n", "ydiff = 0\n", "\n", "snakespeed = 20\n", "batex = random.randint(0, screen_width)\n", "batey = random.randint(0, screen_height)\n", "\n", "# Game loop: receive user events and process them\n", "playing = True\n", "while playing:\n", " for event in pygame.event.get():\n", " if event.type == pygame.QUIT:\n", " playing = False\n", " if event.type == pygame.KEYDOWN:\n", " if event.key == pygame.K_ESCAPE:\n", " playing = False\n", " if event.key == pygame.K_LEFT:\n", " pygame.display.set_caption(\"Left\")\n", " xdiff = -edge\n", " ydiff = 0\n", " if event.key == pygame.K_RIGHT:\n", " pygame.display.set_caption(\"Right\")\n", " xdiff = edge\n", " ydiff = 0\n", " if event.key == pygame.K_UP:\n", " pygame.display.set_caption(\"Up\")\n", " xdiff = 0\n", " ydiff = -edge\n", " if event.key == pygame.K_DOWN:\n", " pygame.display.set_caption(\"Down\")\n", " xdiff = 0\n", " ydiff = edge\n", " if event.key == pygame.K_SPACE:\n", " xdiff = 0\n", " ydiff = 0\n", " \n", " x1 += xdiff\n", " y1 += ydiff\n", " screen.fill([0,0,0]) # fill screen with black color\n", " bate(batex, batey, 10)\n", " snake(x1, y1, 10)\n", " screen_update()\n", "\n", " # check if snake is out of the screen\n", " if out_of_screen(x1, y1, screen_width, screen_height, edge):\n", " playing = False\n", " game_message(\"You lost!\", screen_width/2, screen_height/2, [255,0,0])\n", " pygame.time.wait(2000)\n", " # check if snake eats the bate\n", " if ... : # *** write code\n", " # congratulation\n", " game_message(\"Bingo\", screen_width/2, screen_height/2, [255,255,0])\n", " # add 1 to player's score\n", " # *** write code\n", " pygame.time.wait(1000) # wait for sometimes\n", " # *** write code: put the bate to a new random location\n", " # *** write code: increase snake speed\n", " clock.tick(snakespeed)\n", "\n", "# quit the game\n", "pygame.quit()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" } }, "nbformat": 4, "nbformat_minor": 5 }