ChatGPT has just described what Tetris is., not the "Self-Playing" element... and did it seem to believe BASIC isn't "Good Enough" to make Tetris? Seem a little conceited.
In any case...
There are various approaches to mimicking Human Players.
Now as far as Tetris is concerned it's _actually_ a much to write an AI capable of playing "like" a Human.
This is because the decision variables are limited.
i.e.
Move Block Left
Move Block Right
Rotate Block
Speed Up Block
And the course of action will be based upon an Nth Step in the Future... i.e. "I want this Block at X in Y orientation" then those moves are based upon reaction speed of the individual., which is going to be between 60 - 250ms per Move.
The hardest part would be analyzing the possible solutions (i.e. how you COULD potentially have the block land) then give each of those possible solutions a weight based upon "Most Adventageous"., ignoring under certain values depending on the "Player Skill" then performing a Fuzzy Logic Decision; that is to say, we build a common pattern array; which would trend towards a certain kind of solution... then perform a Wave Function Collapse between the two Solution Arrays.
What we'd be left with is a guaranteed solution based on "Personality" but would appear Randomised to an Observer.
This would echo Human-Like behaviour.
As noted, achieving this with Tetris is easier *because* it's simple and isn't based on a Second-by-Second Decision making process but instead like Chess you're looking X Moves ahead to the Solution *YOU* (or in this case the AI) wants.
By adding in the Reaction Speed, this adds to the apparent skill will also meaning various solutions despite being "Correct" or "Best" will be failed BECAUSE the Thinking-Reaction Time is too high to perform the necessary moves.
If we also add in that Moves can "Fail" (i.e. incorrect positioning) using a multi-pass randomisation using a sequence of varying value ranges (and if said ranges can't be multiplied or divided evenly the better) as this will give a sense of Human-Error.
The failure itself could also be random, be it moving too much, too little, over rotation or deciding the "2nd Choice" was a better option and then recalculating the movement for that.
In-fact arguably indecision about which move to make will add the most "Human" element to it., as every second a chance can be rolled for "Right Move?" as a second guessing; and should it ever pass moves on to the second highest option in the waveform.
Waveform Collapse Functions are exceptionally useful for Fuzzy Logic and Procedural Generation.
And you could over-time build a personality by storing past decisions and weighting them., as this would give "style" to how the AI will play in later games.