皮卡的代码站 - 其他
type: channel
link: https://coding.pika.net.cn/index.php/category/other/
items: [转载] 匹諾康尼的奇幻之旅丨匹諾康尼設定考據
items: 【JDK】游戏设计：FlappyBird (像素鸟)
items: 【PY3】游戏设计：FlappyBird (像素鸟)
items: 【C++】游戏设计：奔跑吧叽咔！No jumping

[转载] 匹諾康尼的奇幻之旅丨匹諾康尼設定考據
type: item
date: 2024-03-24T13:10:00+08:00
description: [转载] 匹諾康尼的奇幻之旅丨匹諾康尼設定考據前言在新版本的開拓任務中，我們來到了充滿甜蜜美夢的匹諾康尼。匹諾康尼到處充滿著繁華的氣息，其中還有美味解渴的蘇樂達，但是埋藏在匹諾康尼美好夢幻的背後卻充滿著謎團和危險。匹諾康尼多個設定中在現實也有對應的參考依據，今天就請跟隨本篇，詳細地了解充滿甜蜜美夢的匹諾康尼的相關設定吧。匹諾康尼原型考據匹諾康尼選取的時代背景原型乃是處在上世紀 20 至 30 年代、有著「咆哮的二十年代」（Roaring Twenties）之稱時期中的美國，即一戰結束後經濟社會蓬勃發展的「黃金十年」；由於恰值卡爾文 · 柯立芝任期內，故也以人名冠之稱作「柯立芝繁榮」（Coolidge Prosperity）。 這一時期以美國為代表的西方世界經濟持續繁榮，社會、藝術和文化領域充滿強勁活力，出現了前所未有的工業化與電氣化浪潮，人們的生活方式在短時間內發生了翻天覆地的徹變。由於激動人心的事件數不勝數，因此有人也稱這段時期為「歷史上最為多彩的年代」。該時期的文化藝術發展表現出強烈的創新性和前衛性，人們在物質和精神上追求全新風貌，其中最具代表性的特徵之一便是「裝飾藝術」（Art Deco）的盛行，這一風格滲透在當時建築、服飾設計等方方面面，構築出時代華麗奢靡的視覺印象，你能在匹諾康尼的夢境世界中感受到濃郁的此類美術設計。爵士樂與舞蹈在反對一戰的情緒中越來越受人們歡迎，因此這一時期亦被後世稱作「爵士時代」（Jazz Age），這一點同樣反映在了匹諾康尼的配樂風格中。社會風氣與精神風貌方面，「咆哮的二十年代」中伴隨經濟的繁榮與物質的大豐富，民眾展現出旺盛的消費需求與消費欲望，推崇純潔、節制生活的傳統道德走向土崩瓦解，「享樂主義」（Hedonism）開始在都市社會大行其道，像是紐約這樣的大都便呈現出一種濃烈的紙醉金迷的社會氛圍。這一鮮明時代特徵也反映在了匹諾康尼的背景設計中，並以自造的專有名詞「糖漿主義」（Syrupism）予以概括。然而，以 1929 年華爾街股災事件為標誌，「咆哮的二十年代」猝然宣告終結，美國開始進入「大蕭條」（The Great Depression）時代。這場發源自美國的經濟衰退災難波及全球，最終造成了自由主義經濟史上最持久、最深刻、最嚴重的週期性世界經濟危機。無數人的美夢於一夕間破碎，自高峰瞬間跌入低谷的社會一時陷入到一場充滿悲觀、混亂與困苦的噩夢中。結合這一歷史背景以及本次主線劇情中提供的線索，似乎預示了匹諾康尼的美好夢境或將面臨一場前所未見「大崩潰」的灰暗未來。鐘錶小子考據「黃金十年」時期開始萌芽的動畫藝術領域則出現了第一種標準化動畫風格，即「橡皮管動畫」（Rubber Hose Animation），著名動畫米老鼠、貓和老鼠、大力水手等經典IP都採用過橡皮管動畫。而遊戲中匹諾康尼的著名動畫 IP「鐘錶小子」就具有這種典型的復古風格。橡皮管動畫是在動畫藝術萌芽及早期有限發展條件下，藝術家們創造的一種「折衷」動畫製作模式，動畫為了減負手繪勞動強度往往不會去細究角色的動作，這使動作效果變得十分誇張同時產生出一種滑稽感，而這正創造出了此類動畫非常獨特的風格。蘇樂達考據匹諾康尼中還有人人喜愛的蘇樂達，在鐘錶小子pv動畫仲介紹了蘇樂達，畫面中巨大的蘇樂達噴湧而出，蘇樂達像下雨一樣從天上飄落。這個畫面與現實中美國波士頓蜜糖爆炸事件有些相似，也可能暗示著匹諾康尼後續的劇情會發生巨大的悲劇。美國波士頓蜜糖爆炸事件，八百萬升糖蜜因為高溫發酵產生爆炸噴湧而出，巨量的高溫粘稠的糖蜜向人們席捲而來。人們被包裹在糖蜜之中，有的人隨著糖蜜的冷卻窒息而死，而倖存者也被糖蜜黏在原地動彈不得，像是粘蠅板上的蒼蠅。這個事件造成了21人死亡150人受傷和大量馬匹死亡，隨後數年間街道上都飄蕩著甜甜的香氣。當時糖蜜是朗姆酒塔菲亞酒的原材料，美國在1919年通過法案，將在1920年施行禁酒令，而前瞻直播中提及的邪惡的典獄長將蘇樂達列為禁品，正好對應著禁酒令。匹諾康尼星球外形考據匹諾康尼的星球原型是著名科幻電影《盜夢空間》中的陀螺，在電影《盜夢空間》中，陀螺男主是用來檢測自己是否在夢境中。因為陀螺是男主夢境中的圖騰，每個人都會有一個圖騰，只要陀螺一直轉下來，那麼就會說明男主還在夢境中。而匹諾康尼的外形也是一個陀螺，暗示著我們進入匹諾康尼的時候就已經陷入了無盡的夢境之中。在遊戲劇情中，我們進入匹諾康尼之前就進入了夢境和黃泉相見，黃泉和我們的一些對話和反應，總是隱隱約約暗示著黃泉可能在夢境中經歷過多次輪回，我們可能就處於夢中夢。根據劇情各種線索推測，當我們認為在匹諾康尼的現實世界中的時候，可能就處在夢中夢的世界中。原文链接《匹諾康尼的奇幻之旅丨匹諾康尼設定考據》，LuckyPomPom_CHT，https://www.hoyolab.com/ar…

【JDK】游戏设计：FlappyBird (像素鸟)
type: item
date: 2020-01-10T13:02:00+08:00
description: JavaFx实现Flappybird《flappy bird》是一款由来自越南的独立游戏开发者Dong Nguyen所开发的作品。游戏中玩家必须控制一只小鸟，跨越由各种不同长度水管所组成的障碍。现在用Java还原了这款游戏。运行截图首页游戏中结算项目文件项目文件项目源码入口main.javapackage pika.game.flappybird; /*-------------------------------------- Flappy Bird Code by Pikachu Java课程设计 任浩龙2018141461344 --------------------------------------*/ import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.text.Text; public class Main extends Application { //----------------------------------------------全局游戏设置参数---------------------------------------------- public static final int game_wind_high = 960; //全局窗口高度 public static final int game_wind_wedh = 864; //全局窗口宽度 public static final int game_fram_fpst = 17; //全局同步间隔 public static final int game_dbug_imgs = 0; //图像调试标识 public static final int game_dbug_taps = 1; //水管调试标识 public static final double bird_data_datg =0.45; //记录小鸟重力 public static double bird_data_high = 330; //记录小鸟位置 public static double bird_data_spee = 0; //记录小鸟速度，每一帧执行后自增的速度 public static final double bird_data_addq = 10; //小鸟上升速度，每次按下鼠标设置的速度 public static double taps_spee_init = 6; //记录水管速度 public static final double taps_spee_adda = 0; //水管递增速度，每隔多少帧增加多少速度 public static double taps_spee_addb = 140; //水管递增间隔，每隔多少帧增加一根水管 public static final double taps_spee_addc = 2; //水管递增递减，每通过一根水管减多少帧 public static double taps_spee_addd = 0; //水管递增计数，统计当前执行的是多少帧 public static final double taps_spee_adde = 30; //水管递增下界，记录最少间隔多少帧自增 public static double game_scor_data = 0; //存储游戏分数 public static Imgs main_ctrl = new Imgs(); //全局渲染对象 public static Imgs menu_bgmp = new Imgs(); //菜单背景图片 public static Imgs menu_titl = new Imgs(); //菜单标题图片 public static Imgs menu_star = new Imgs(); //菜单开始图片 public static Imgs menu_bars = new Imgs(); //菜单底纹图片 public static Imgs menu_bart = new Imgs(); //菜单底纹图片 public static Imgs game_bird = new Imgs(); //游戏小鸟图像 public static Imgs ends_titl = new Imgs(); //游戏结束标题 public static Imgs ends_pans = new Imgs(); //游戏结束标题 public static Imgs ends_dold = new Img…

【PY3】游戏设计：FlappyBird (像素鸟)
type: item
date: 2019-09-22T22:32:00+08:00
description: 《flappy bird》是一款由来自越南的独立游戏开发者Dong Nguyen所开发的作品。游戏中玩家必须控制一只小鸟，跨越由各种不同长度水管所组成的障碍。现在用Python还原了这款游戏。项目地址：https://github.com/PIKACHUIM/PIKA-PY3-FlappyBird项目文件：【点击下载】游戏源码import pygame from pygame.locals import * from sys import exit import random # -----------------------------设置全局变量----------------------------- GAME_WINDP_HEIGH = 864 # 窗口高度 # GAME_WINDP_WEDTH = 1024 # 窗口宽度 GAME_WINDP_WEDTH = 960 # 窗口宽度 GAME_WINDP_BASEY = 432 # 中心高度 GAME_PIPES_WIDTH = 52 # 管子宽度 GAME_PIPES_HEIGH = 512 # 管子高度 GAME_PIPES_GAPSZ = 10 # 水管间距 GAME_BIRDS_WIDTH = 48 # 小鸟宽度 GAME_BIRDS_HEIGH = 48 # 小鸟高度 global BIRD_X global BIRD_Y global BIRD_V BIRD_X = 420 BIRD_Y = 432 BIRD_V = 0 WIND_WINDP = pygame.display.set_mode((GAME_WINDP_HEIGH, GAME_WINDP_WEDTH)) # -----------------------------设置全局变量----------------------------- class IMGS: POSX = 0 POSY = 0 POSW = 0 POSH = 0 NAME = "" def __init__(self, NAME): self.NAME = NAME self.DATA = pygame.image.load("./ASSE/PICTS_" + NAME + ".PNG").convert_alpha() def PICS(self, NAME): self.NAME = NAME self.DATA = pygame.image.load("./ASSE/PICTS_" + NAME + ".PNG").convert_alpha() def SETP(self, X, Y, W, H): self.POSX = X self.POSY = Y self.POSW = W self.POSH = H def SHOW(self): WIND_WINDP.blit(self.DATA, (self.POSX, self.POSY, self.POSW, self.POSH)) def GAME_PIPE(): # 两个水管之间的距离有如下变量 PIPE_GAPS = [100, 200, 300, 400] PIPE_PIJG = [60, 90, 120, 150, 180] PIPE_RAND = random.randint(0, len(PIPE_GAPS) - 1) PIPE_GAPY = PIPE_GAPS[PIPE_RAND] PIPE_RAND = random.randint(0, len(PIPE_PIJG) - 1) PIPE_PIJR = PIPE_PIJG[PIPE_RAND] PIPE_GAPX = GAME_WINDP_WEDTH + 10 return [ {'x': PIPE_GAPX, 'y': PIPE_GAPY - GAME_PIPES_WIDTH - 600 - PIPE_PIJR}, # 上面水管的左上角位置 {'x': PIPE_GAPX, 'y': PIPE_GAPY + GAME_PIPES_HEIGH - 300 + PIPE_PIJR}, # 下面水管的左上角位置 ] def GAME_INIT(): pygame.init() pygame.display.set_caption("Flappy Bird") pygame.mixer.music.load("./ASSE/MUSIC_BGM.WAV") global REND_BGPBT global REND_BGPHY global REND_START global REND_TITLE global REND_BIRD1 global REND_BIRD2 global REND_BIRD3 gl…

【C++】游戏设计：奔跑吧叽咔！No jumping
type: item
date: 2019-08-22T23:02:00+08:00
description: C++与SDL实现奔跑吧叽咔CPP+SDL引擎实现奔跑吧叽卡（No jumping）是游戏工作室Ticktock正式发布的第四款游戏 叽卡是一只不会飞也不会跳的小鸟，只会用柔软的肚皮向前走 环游世界是它最大的梦想，冰雪王国，月光之城，魔法森林…… 现在我用C++与SDL渲染移植了这个游戏 项目地址：https://github.com/PIKACHUIM/PIKA-CPP-NoJumping源代码文件二进制文件游戏截图菜单界面：游戏界面：过关界面：工程架构入口main.cpp:#undef main #include "./EXTL/WIND.CPP" #include "./LIBS/REND.CPP" #include "MENU.CPP" int main(int argc,char *argv[]) { WIND_INIT(argc,argv); REND_INIT(); MENU_INIT(); MENU_SHOW(); WIND_EXIT(); return 0; }主菜单menu.cpp#pragma once #ifndef MENU_CPP #define MENU_CPP #include"LIBS/IMGS.CPP" #include"LIBS/READ.CPP" #include"LIBS/TYPE.CPP" #include"LIBS/REND.CPP" #include"LIBS/TYPE.CPP" #include"EXTL/WIND.CPP" #include"EXTL/HEAD.CPP" #include"YXXY.CPP" static int BIRD_POTS = rand()%10+3; //将小鸟位置绑定 static SDE MENU_EVEN; //初始化事件对象 static IMGS MENU_FKYPS[15]; //创建主菜单方块 static IMGS MENU_MENUS[ 8]; //创建主菜单控件 static READ MENU_LOADS("MAPS","MAP","MENU",1,5); //读取主菜单配置 static IMGS MENU_BIRDS; //创建主菜单小鸟 static TYPE FKTP[6][4]; //初始化渲染数据 static double TIME_LAST = SDL_GetTicks(); //初始化上次时间 static double TIME_LOOP = SDL_GetTicks(); //初始化当前时间 int MENU_INIT() { for(int LOOP_A=1;LOOP_A<=7 ;LOOP_A++) //读取菜单控件 MENU_MENUS[LOOP_A].SETP("MENU", //种类 MENU_LOADS.DATA[LOOP_A][1], //编号 MENU_LOADS.DATA[LOOP_A][2], //水平 MENU_LOADS.DATA[LOOP_A][3], //垂直 MENU_LOADS.DATA[LOOP_A][4], //宽度 MENU_LOADS.DATA[LOOP_A][5]); //高度 for(int LOOP_T=0;LOOP_T<=14;LOOP_T++){ //设置方块状态 MENU_FKYPS[LOOP_T].IMGS_IMGS_UPDO=1; //向上 MENU_FKYPS[LOOP_T].SETP("FKYP", //种类 rand()%3+1+(rand()%5+1)*10, //颜色 000+100*LOOP_T, //水平 400+ 20*LOOP_T, //垂直 81,511);} //大小 for(int LOOP_A= 0,LOOP_T=1; //设置类型数据 LOOP_A<=5;LOOP_A++,LOOP_T++) for(int LOOP_B=1;LOOP_B<=3;LOOP_B++) FKTP[LOOP_A][LOOP_B].SETP( LOOP_A*10+LOOP_B,LOOP_T); BIRD_POTS = rand()%10+3; //小鸟位置绑定 MENU_BIRDS.SETP("BIRD",01,440,000,71,57); //拷贝小鸟图形 YXXY_INIT(); //初始化分菜单 return 0; } int MENU_UPDA(int count) { if ((SDL_GetTicks() - TIME_LOOP) / 1 > 1) { for(int LOOP_TMPS=0;LOOP_TMPS<=14;LOOP_TMPS++) { if(MENU_FKYPS[LOOP_TMPS].IMGS_IMGS_POST.y==7…