2021年12月10日 星期五

Python minecraft sim Game developer engine Libraries

 Python minecraft sim Game developer engine Libraries

Ursina Engine


https://python-forum.io/

 
https://pythonrepo.com/repo/py-mine-PyMine
https://pythonrepo.com/repo/shasankp000-PyCraft-python-game-development
https://pythonrepo.com/repo/txtsd-mcrpc-python-game-development
https://pythonrepo.com/repo/shurik204-map-prepare-python-game-development
https://pythonrepo.com/repo/mcbeet-mecha-python-command-line-tools
https://pythonrepo.com/tag/minecraft

https://github.com/FalconNL/mc2obj
https://github.com/tschuy/minecraft-server-control
https://github.com/pa7lux/python-minecraft-lib
https://github.com/ammaraskar/pyCraft
https://github.com/kbsriram/mcpiapi
https://github.com/barneygale/quarry
https://github.com/AlexKvazos/MinecraftChat

https://pypi.org/project/mcrcon/
https://pypi.org/project/mcpi/
https://theduckcow.com/dev/blender/mcprep/

https://brightonscience.com/wordpress/events/venture-coders-an-introduction-to-hacking-with-minecraft-and-python-4/

https://jayconsystems.com/blog/learn-how-to-program-in-python-with-minecraft
The MODERN Wood Minecraft Library! | Python's World (Minecraft Survival Let's Play) | Episode 35
 
https://www.instructables.com/Python-Coding-for-Android-Minecraft-PE/
https://mcpipy.wordpress.com/2013/02/22/getting-minecraft-pi-edition-running/
https://quarry.readthedocs.io/en/latest/examples.html

https://github.com/mandaw2014/parkour

Multi-monitor in Delphi . Change Screen Resolution

https://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.Forms.TScreen.Monitors
https://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.Forms.TMonitor

Developing Application Programs Using Multi-monitor in Delphi
 Screen.MonitorCount Screen.Monitors array WorkareaRect  TCustomForm.MakeFullyVisible
MakeFullyVisible Monitor  dmDesktop  TScreen TMonitor
dmDesktop No special treatment
dmPrimary Display the form on the first monitor. This is another trap, literally understood as the main monitor, but in fact it refers to the Screen.Monitor[0] monitor.
dmMainForm Display the form to the monitor where the main form is located
dmActiveForm Display the form to the monitor on the desktop where the active form is located
 
BoundsRect  Get the corresponding desktop area of ​​the monitor, which is equivalent to the above four attributes
WorkareaRect  Get the area of ​​the desktop corresponding to the working area of ​​the monitor.

https://github.com/t-d-k/LibreCrypt/blob/master/SDeanComponents/DelphiVistaModifications/_originals/_ORIG%20-%20Forms.pas%20-%20ORIG_
 LibreCrypt/SDeanComponents/DelphiVistaModifications/_originals/_ORIG - Forms.pas - ORIG_
 
Tips for Multi-Resolution Delphi Applications
https://www.thoughtco.com/multi-resolution-delphi-applications-1058296
 
改變螢幕解析度. Change Screen Resolution in Windows using C++ 主要使用Windows API ChangeDisplaySettings 及 EnumDisplaySettings

取得單一螢幕或多螢幕的解析度get resolution of a ...
https://ccw1986.blogspot.com › 2014/01 › c-get-resolut...
 foreach (var screen in System.Windows.Forms.Screen.AllScreens) { Console.WriteLine("Device Name: " + screen.DeviceName);//裝置名稱. Console.

delphi Windows Resolution recommended screen resolution
Get current/native screen resolution of all monitors in Delphi DirectX

MonInfo: TMonitorInfo;
  MonInfo.cbSize := SizeOf(MonInfo);
  GetMonitorInfo(MonitorFromWindow(Handle, MONITOR_DEFAULTTONEAREST), @MonInfo);
  ShowMessage(Format('Current resolution: %dx%d',
              [MonInfo.rcMonitor.Right - MonInfo.rcMonitor.Left,
               MonInfo.rcMonitor.Bottom - MonInfo.rcMonitor.Top]));


See the GetDeviceCaps API to get the screen resolution.

Use the TCustomForm.Monitor property to get the monitor on which the form appears.
 
how to get the recommend resolution (native ... - MSDN
https://social.msdn.microsoft.com › en-US
Building Windows 8. As to how to get screen resolution using C++. There are many ways to do this. You can choose to use. GetSystemMetrics with ...
 
    GetSystemMetrics function (winuser.h) - Win32 apps
    https://docs.microsoft.com › win32 › api The width of the client area for a full-screen window on the primary display monitor, in pixels. To get the coordinates of the portion of ...

Improving the high-DPI experience in GDI based Desktop Apps
https://blogs.windows.com  GDI was for many years the de facto win32 2D API and is behind many of ... how best to make legacy GDI apps look right on high DPI monitors.
  Windows 8.1 DPI Scaling Enhancements This could be a problem if the reason you bought that 4K display was to see more of your images at native resolution! Windows 8.1 provides APIs ...

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-changedisplaysettingsexa
ChangeDisplaySettingsExA function (winuser.h)

https://blogs.embarcadero.com/new-in-rad-studio-11-high-dpi-ide-and-form-designing/
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Per_Monitor_V2
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Supporting_high-DPI_images_with_the_Image_Collection_and_Virtual_ImageList_components
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/VCL_Styles_Support_for_High-DPI_Graphics
 
https://github.com/ThePacielloGroup/CCA-Win/blob/master/PerMonitorApi.pas
Type
  TMONITOR_DPI_TYPE = (
    MDT_EFFECTIVE_DPI {= 0},
    MDT_ANGULAR_DPI   {= 1},
    MDT_RAW_DPI       {= 2},
    MDT_DEFAULT       {= MDT_EFFECTIVE_DPI });
var
  dpiX              : UINT;
  dpiY              : UINT;
  ErrCode           : HResult;
  hShcore           : THandle;
  GetDpiForMonitor  : function(monitor: HMONITOR; dpiType: TMONITOR_DPI_TYPE; var dpi, dpiY: UINT): HRESULT; stdcall;
begin
  hShcore := GetModuleHandle('Shcore');
  If hShcore <> 0 then GetDpiForMonitor := GetProcAddress(hShcore,'GetDpiForMonitor');
  If @GetDpiForMonitor <> nil then
    ErrCode := GetDpiForMonitor(Monitor.Handle,MDT_EFFECTIVE_DPI,dpiX,dpiY);
end;
https://docs.microsoft.com/zh-tw/archive/blogs/askcore/display-scaling-in-windows-10
https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows
https://gist.github.com/toptensoftware/a6b8ca2cfc9ac63e7b6687968db408a2

https://github.com/r1me/delphi-monitorhelper/blob/master/Vcl.Forms.MonitorHelper.pas
https://github.com/pgiacomo69/TFormResizer
https://github.com/KohrAhr/DelphiDemoPPI

https://github.com/timmui/ScreenResolutionChanger
 
https://stackoverflow.com/questions/1538602/find-number-and-resolution-to-all-monitors
In C#: Screen Class Represents a display device or multiple display devices on a single system. You want the Bounds attribute.
 var screen in Screen.AllScreens)
    // For each screen, add the screen properties to a list box.
     ("Device Name: " + screen.DeviceName);
     ("Bounds: " + screen.Bounds.ToString());
     ("Type: " + screen.GetType().ToString());
     ("Working Area: " + screen.WorkingArea.ToString());
     ("Primary Screen: " + screen.Primary.ToString());

取得顯示監視器的資訊

https://docs.microsoft.com/zh-tw/windows/win32/gdi/getting-information-on-a-display-monitor
https://docs.microsoft.com/zh-tw/windows/win32/api/winuser/nf-winuser-enumdisplaydevicesa
BOOL GetDisplayMonitorInfo(int nDeviceIndex, LPSTR lpszMonitorInfo)
    FARPROC EnumDisplayDevices;
    HINSTANCE  hInstUser32;
    DISPLAY_DEVICE DispDev;
    char szSaveDeviceName[33];  // 32 + 1 for the null-terminator
    BOOL bRet = TRUE;
        HRESULT hr;
    hInstUser32 = LoadLibrary("c:\\windows\User32.DLL");
    if (!hInstUser32) return FALSE; 
    // Get the address of the EnumDisplayDevices function
    EnumDisplayDevices = (FARPROC)GetProcAddress(hInstUser32,"EnumDisplayDevicesA");
    if (!EnumDisplayDevices) {
        FreeLibrary(hInstUser32);
if (EnumDisplayDevices(NULL, nDeviceIndex, &DispDev, 0))
                hr = StringCchCopy(szSaveDeviceName, 33, DispDev.DeviceName);
        EnumDisplayDevices(szSaveDeviceName, 0, &DispDev, 0);  
                hr = StringCchCopy(lpszMonitorInfo, 129, DispDev.DeviceString);
                if (FAILED(hr))
 

Программирование в среде Delphi https://www.delphiplus.org/

 https://www.delphiplus.org/

 


Delphi Plus - ежедневные новости IT-технологий
Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor...
    Программирование в среде Delphi
    Книга, написанная тремя экспертами по Delphi, представляет собой одно из лучших изложений этой принципиально новой среды разработки. Читатель найдет в ней уникальное толкование объектно-ориентировашюго программирования. В книге приводятся пошаговые инструкции по созданию коммерческих приложений, использующих базы данных. Книга может применяться в качестве учебного и справочного пособия для преподавателей, студентов, разработчиков программного обеспечения.
    Программирование в Delphi 7
    В книге обсуждаются вопросы профессиональной разработки приложений в среде Borland Delphi 7. Приводится детальное описание объектной концепции, стандартных и программных технологий, используемых при работе программистов. Значительная часть материала посвящена разработке приложений, базирующихся на широко используемых и перспективных технологиях доступа к данным: ADO, dbExpress, InterBase Express. Достойное место отведено распределенным многозвенным приложениям и технологии DataSnap. Все рассматриваемые в этой книге темы сопровождаются подробными примерами.

Mastering Delphi 7

 
Working with HTTP
http://etutorials.org/Programming/mastering+delphi+7/Part+IV+Delphi+the+Internet+and+a+.NET+Preview/Chapter+19+Internet+Programming+Sockets+and+Indy/Working+with+HTTP/
http://etutorials.org/Programming/mastering+delphi+7/


http://etutorials.org/Programming/

Working with HTTP Chapter 19 Internet Programming Sockets and Indy Part IV Delphi, the Internet, and a .NET Preview Masterin


http://www.fredshack.com/docs/delphi.html 

The Delphi language was formerly known as Object Pascal, and is an object-oriented version of the venerable Pascal language, combined by Borland with a Visual Basic-like RAD tool that lets you write fast GUI applications with no run-time, a very rich set of components (VCLs) that can be statically compiled into the EXE, and an encapsulation of most of the Windows API for easier access to the underlying OS. If this reminds you of .Net, it's no chance since both Delphi and the .Net framework were designed by the same person, Anders Hejlsberg. For more infos, read Delphi history – from Pascal to Diamondback (Delphi 2005) by Zarko Gajic.

 http://zarko-gajic.iz.hr/run-your-delphi-application-in-full-screen-implement-f11-full-screen/

http://zarko-gajic.iz.hr/gzoom-delphi-implementation-of-the-missing-mode-in-windows-magnifier/

https://www.google.com/search?client=firefox-b-d&q=Zarko+Gajic. 

Object Oriented Programming  Delphi Simulating Multicast Events

Reacts 3d JSON Model GLTF ThreeJs

 Reacts 3d JSON Model GLTF ThreeJs

GL Transmission Format

 https://threejs.org/

https://discoverthreejs.com/book/first-steps/load-models/ 

https://redstapler.co/add-3d-model-to-website-threejs/

https://kcoley.github.io/

https://xeogl.org/docs/classes/GLTFModel.html

https://developers.google.com/maps/documentation/javascript/examples/webgl/webgl-overlay-simple

https://listoffreeware.com/best-free-glb-viewer-online-websites/

https://github.com/you-win/godot-dynamic-gltf-loader

https://github.com/KhronosGroup/glTF/blob/main/specification/2.0/README.md

gltf Dynamic Loading mapping  

OrthographicCamera PerspectiveCamera 

Scene Camera Object Geometry Material Light Renderer

https://www.blockbench.net/

Anonymous Methods and Closures in Delphi 2010

 Anonymous Methods and Closures in Delphi 2010  
reference to procedure; Comparison to other method types Invoking an anonymous method Anonymous methods as variables Anonymous methods as parameters Inline declaration Inversion of Control (IoC)

http://interactiveasp.net/blogs/spgilmore/archive/2010/06/17/anonymous-methods-and-closures-in-delphi-2010.aspx

MJ Freelancing Home delphi com website

 http://www.mjfreelancing.com/

 

 Build your C++Builder� projects with confidence

MJFAFMJFAF is MJ Freelancing's flagship product.  Comprised of several runtime packages, MJFAF is a comprehensive collection of utility classes and functions aimed at increasing the return on investment in every project you create.

More detailed information can be found on the MJFAF product information page.
 

MJFVCLKey factors to consider when choosing a third party library include code reproducibility, reliability and stability.  MJFVCL builds upon the solid foundation provided by MJFAF thereby giving you the confidence to use it in each and every development project.

More detailed information can be found on the MJFVCL product information page.
 
IKGIKG is a freeware application used to generate unlock codes for users of the Inno Setup utility.

More detailed information can be found on the IKG product information page.

 

 

 

IndyThe MJFAF and MJFVCL products provide wrappers around various features found in the Indy Sockets open source project to simplify tasks such as transmitting data using the TCP and UDP protocols, with additional wrappers being added on a as-required basis.

Even if you're not a user of MJFAF or MJFVCL you can download pre-built binaries (and source) of Indy 9 and Indy 10 from this site.  Refer to the Indy download page for more detailed information.
 

Turbo Pack Open source, community maintained projects for use with Embarcadero's RAD Studio, Delphi and C++Builder.

 https://github.com/TurboPack

LockBox3 is a Delphi and C++Builder library for cryptography.
SynEdit
SynEdit is a syntax highlighting edit control, not based on the Windows common controls.
LockBox is a Delphi and C++Builder library for cryptography.
VirtualTreeView
Virtual Treeview is a Delphi treeview control built from ground up. Many years of development made it one of the most flexible and advanced tree controls available today. Virtual Treeview starts of…
Abbrevia
Abbrevia is a compression toolkit for Delphi and C++Builder.
PowerPDF
PowerPdf is a VCL component to create PDF docment visually. Like Forms, you can design PDF document easily on Delphi or C++Builder IDE.

UML chess rank piece rule pawns chess object name type level position

 https://forum.unity.com/threads/unity-3d-chess-project.67097/

 https://www.geeksforgeeks.org/design-a-chess-game/

 https://en.wikipedia.org/wiki/Rules_of_chess

https://www.chess.com/forum/view/chess-openings/pawn-structure-classification-codes?page=2

OpenGL SDL game engine

 https://swarminglogic.com/article/2013_10_gamedev01

A little over a month ago, I started making my own game engine, which has until now, for the most part been a learn-OpenGL-as-I-go process.

This article is the first in a series of development logs where spend time to look back and write about the past month. The intention is to document progress, decisions made, difficulties encountered and lessons learned.

It would be great if the scribblings here were of use to someone else, but for now I'll settle for giving an answer to friends and family wondering what I'm doing all day. That, and to have something to cheer me up, if I feel I'm not making progress.

The past month was devoted to learning OpenGL and SDL2, and putting together the first pieces of a game engine (so far, just a rudimentary graphics engine).
1. Making choices: C++, OpenGL and SDL

First of all, I should point out that I'm not interested in taking the shortest path to "making a game". If that were the case, I'd be crazy not to go with Unity, Unreal Engine, UDK, or any other framework that solves the millions of problems that undoubtedly will arise. I'm interested in learning the technology, and the more fundamental building blocks.
1.1. Why C++
 

DB Filter Data Manipulation Language Array DML FireDAC TDataSet.Filter

 Array DML FireDAC

The Array DML execution technique submits a single DBMS command with an array of parameters. Each command parameter has an array of values, ...
Array DML (FireDAC) - RAD Studio - Embarcadero DocWiki
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Array_DML_(FireDAC)

https://docs.oracle.com/cd/E11882_01/appdev.112/e10766/tdddg_dml.htm#TDDDG23000
About Data Manipulation Language (DML) Statements
Data manipulation language (DML) statements access and manipulate data in existing tables.
In the SQL*Plus environment, you can enter a DML statement after the SQL> prompt.
In the SQL Developer environment, you can enter a DML statement in the Worksheet. Alternatively, you can use the SQL Developer Connections frame and tools to access and manipulate data.
https://zh.wikipedia.org/wiki/%E8%B3%87%E6%96%99%E6%93%8D%E7%B8%B1%E8%AA%9E%E8%A8%80

https://docwiki.embarcadero.com/Libraries/Alexandria/en/FireDAC.Stan.Option.TFDResourceOptions.ParamCreate

https://docwiki.embarcadero.com/RADStudio/XE7/en/Working_with_Commands_(FireDAC)

https://docwiki.embarcadero.com/Libraries/Alexandria/en/FireDAC.Stan.Option.TFDResourceOptions.ParamCreate

https://www.embarcadero.com/cn/products/rad-studio/firedac

https://en.wikipedia.org/wiki/Data_manipulation_language

https://www.geeksforgeeks.org/sql-ddl-dql-dml-dcl-tcl-commands/


TDataSet.Filter
A TTable.Filter isn't a SQL query. LIKE isn't supported (neither is IN). The supported operators are =, <>, >, <, >=, '<=,AND,NOTandOR`, according to the documentation
For more complicated filtering, use the TDataSet.OnFilterRecord event:
procedure TForm1.Table1FilterRecord(Dataset: TDataset; var Accept: Boolean);
begin
  // Don't remember if D7 supports DataSet[FieldName] syntax; if not,
  // use DataSet.FieldByName instead, or a persistent field.
  Accept := Pos(Edit_Search.Text, DataSet[SearchField].AsString) > 0;
end;
delphi Setting_the_Filter_Property
docwiki.embarcadero.com/RADStudio/en/Properties#Array_Properties
docwiki.embarcadero.com/RADStudio/en/Properties#Index_Specifiers
https://docwiki.embarcadero.com/Libraries/Alexandria/en/Data.DB.TDataSet.OnFilterRecord
https://docwiki.embarcadero.com/Libraries/Alexandria/en/Data.DB.TDataSet.Filter
Filtering ClientDataSets  
https://edn.embarcadero.com/article/29271

filtered屬性設定為true
Data.DB.TDataSet.Filter - RAD Studio API Documentation
Data.DB.TDataSet.Filter. Up to Parent: TDataSet. Delphi ... following run-time example shows how to assign that filter expression to the Data.DB.TDataSet.


Starting and Exiting Windows ISQL - Delphi and InterBase
https://www.delphipower.xyz › interbase
The ISQL window can also be opened from the Server Manager by choosing Tasks I Interactive SQL or clicking on the corresponding Speedbar ...
Interactive SQL Window - InterBase - Embarcadero DocWiki
https://docwiki.embarcadero.com › Intera...
The IBConsole isql Window permits you to
execute DDL and DML commands
to the InterBase server as well as to load, save, print, cut, paste, and copy SQL scripts ...

https://www.firebirdsql.org/file/documentation/html/en/firebirddocs/isql/firebird-isql.html

DatGridView Filter BindingSource.Filter Property