發表文章

pygame自動生成迷宮遊戲製作

我的迷宮遊戲小實作 最近在玩 Python,順便自己做了一個迷宮遊戲,用的是 Pygame 。基本概念是這樣的:我畫一個格子地圖,每個格子都有牆,然後用程式隨機生成通路,玩家就要從左上角走到右下角。 程式裡我設定了畫面大小、格子數量和每格的尺寸,還有顏色設定:牆是黑色、路是白色、玩家是紅色、終點是綠色,完成遊戲會跳出黃色的「MISSION COMPLETE!」。 每個格子都是一個 Cell 類別物件,它有牆的資訊和是否被走過的標記。生成迷宮用的是 深度優先搜尋(DFS) ,簡單說就是從起點一路隨機走,遇到死路就回到上一格再試其他路,直到整個格子都走過。 玩家可以用方向鍵移動,但如果前面有牆就不能走。每次畫面更新,程式會重繪整個迷宮、玩家和終點。如果到達終點就顯示完成訊息。 這個小遊戲對我來說很好玩,也練到了程式邏輯、物件導向概念和 Pygame 畫圖的方法。下一步想試試加計時、計分,甚至做成自動解迷的功能。 這是我的程式碼: import pygame import sys import random SCREEN_WIDTH = 1000 SCREEN_HEIGHT = 750 FPS = 30 COLS , ROWS = 40 , 30 CELL_SIZE = min ( SCREEN_WIDTH // COLS , SCREEN_HEIGHT // ROWS ) PLAYER_SIZE = max ( 1 , ( CELL_SIZE * 2 ) // 3 ) WALL_COLOR = ( 0 , 0 , 0 ) PATH_COLOR = ( 255 , 255 , 255 ) PLAYER_COLOR = ( 255 , 0 , 0 ) GOAL_COLOR = ( 0 , 255 , 0 ) WIN_TEXT_COLOR = ( 255 , 255 , 0 ) class Cell : def __init__ ( self , x , y , cell_size ): self . x , self . y = x , y self . cell_size = cell_size self . walls = ...

python計算機製作

  製作計算機的小心得 最近我花了一點時間,用 Python 做了一個小型的計算機程式。這算是我第一次用到 Tkinter 這個套件,主要是想練習圖形介面(GUI)的製作,也讓自己從純文字輸出進一步嘗試互動操作。 Tkinter 是 Python 內建的 GUI 工具,不需要額外安裝就能使用。它提供了像是 Button 、 Label 、 Entry 這些元件,可以讓使用者輸入數字、按下按鈕後看到結果。我覺得它的邏輯其實蠻直覺的,只是排版的部分要多試幾次才會順眼。 我的程式裡除了基本的加減乘除之外,我還加上了一些進階功能,像是質因數分解、因數列出、階乘等等。這些功能主要是練習數學運算的邏輯,像質因數分解就要用迴圈和條件判斷,階乘則可以用遞迴或是簡單的乘法累加來實作。 整個過程裡我學到最多的,其實不是數學公式,而是介面設計的邏輯。要讓使用者輸入、再顯示結果,看似簡單,但要讓整體運作流暢、畫面整潔,就需要一點結構規劃。雖然 Tkinter 不算華麗,但對初學者來說很夠用。 最後這次的作品讓我更熟悉了 Python 的基礎,也對 GUI 的概念有了實際體驗。下一步我可能會想試試看用 Flask 或 HTML 版本的計算機,看看能不能做成網頁版的。 這是我的程式: import tkinter as tk from tkinter import font from functools import partial # ----------------- 運算函數 ----------------- def gcd ( a , b ): a , b = abs ( a ), abs ( b ) while b != 0 : a , b = b , a % b return a def lcm ( a , b ): return abs ( a * b ) // gcd ( a , b ) def square ( a , b ): return a ** b def factorize ( n ): n_abs = abs ( n ) if n_abs == 0 : return [( 0 , 1...

奇妙的3和9

 你是否也有發現3和9的奇妙之處? 3*1=3,    3*2=6, 3*3=9, 3*4=12,    1+2=3 3*5=15,     1+5=6 3*6=18,     1+8=9 3*7=21,     2+1=3 3*8=24,    2+4=6 3*9=27     2+7=9 3,6,9皆為三的倍數 9*1=9,    9*2=18, 9*3=27, 9*4=36,    3+6=9 9*5=45,    4+5=9 9*6=54,    5+4=9 9*7=63,    6+3=9 9*8=72,   7+2=9 9*9=81,   8+1=9 9*10=90 9*11=99...... 結果都是9或是9的倍數

1~110平方秒速超級心算法!

 今天要教大家的是:超級心算法! 大家一定很好奇這是什麼意思呢? 等一下就知道了! 第一步:擬定題目 先隨便從1~110選一個數字 第二步:估計大小 情況1:如果你選的數字是1~60, 那麼就先算和五十的差距 例如:53-50=3或50-37=13 情況2:如果你選的數字是60~110, 那麼就先算和一百的差距 例如:100-93=7或104-100=4   第三步:算出答案 情況1:如果你選的數字是1~60且小於五十, 那麼就減掉和五十的差距再除以二,再乘以一百, 並加上和五十的差距的平方,就算出答案了! 例如:(37-13)/2*100+13*13=1369 情況2:如果你選的數字是1~60且大於五十, 那麼就加上和五十的差距再除以二,再乘以一百, 並加上和五十的差距的平方,就算出答案了! 例如:(53+3)/2*100+3*3=2809 情況3:如果你選的數字是60~110且小於一百, 那麼就減掉和一百的差距,再乘以一百, 並加上和一百的差距的平方,就算出答案了! 例如:(93-7)*100+7*7=8649 情況4:如果你選的數字是60~110且大於一百, 那麼就加上和一百的差距,再乘以一百, 並加上和一百的差距的平方,就算出答案了! 例如:(104+4)*100+4*4=10816  第四步:公式解析 情況1:47*47           =(50-3)*(500-3)           =50*50-50*3-50*3+3*3(注意!負負得正,是加)          =(47-3-3)*100/2+9          =44/2*100+9          =2209 情況2:97*97         =(100-3)*(100-3)         =100*100-100*3-100*3+3*3(注意!負負得正,是加) ...

相反數字的規律

 你有注意到這個有趣的規律嗎? 10-01=9 21-12=9 32-23=9 43-34=9 54-45=9 65-56=9 76-67=9 87-78=9 98-89=9 有些時候只要細心觀察,就能發現一些驚奇的東西。

平方的方法

      你背過1~30的平方嗎?        你可能已經發現他們之間都一直含有一個規律: a*a=(a+1)*(a+1)-a-(a+1)     但是20到30的平方有更好的方法:     400,441,484,529,576,625,676,729,784,841,900     他們的個位數字和十位數字都有重複     400,900     441,841     484,784     529,729     576,676     625     相信你一定能輕鬆背完1~30的平方