recently in the toss Selenium automation , the feeling of the crawler is very interesting, most of the previously difficult to simulate the site can crawl, tossing so long, so I want to play a 2048 game automatically . ! Hey, I am not good at playing games, before playing 2048 often got very low points, often think of all "bitterly", so I intend to take 2048 surgery, through several ways, let the program help me play!
Environment : Python 3.5
Library to use : Re, random, time, selenium
2048 Web Edition : http://2048.oubk.com
This article uses the selenium, before the operation needs to install the selenium and the Chromedriver driver beforehand
Check it out first.
The first step: Browse the Web to determine your needs
Can be found that this page can register login, there are various time periods of the points leaderboard, the game is played by the keyboard key, after the game is over, will pop up such a box
So I wonder if this page will be able to log in and out automatically, and also want to convert the 4*4 block to the corresponding matrix list, and after the game is over, you can automatically click and play again.
Try it, maybe, let's have a look at the analysis.
Step two: Analyze the target site on demand
Requirement 1: Login to specified account
Go to developer mode to navigate to the "sign in" element:
The Selenium library provides a number of ways to get elements from a Web page, and individuals prefer to get them through XPath, thus copying their XPath paths
After clicking Sign in, there will be a popup window:
In the same way, get the account input box password input box login XPath path
Requirement 2: Play again
This is the tip when the game is over
Image upload failed
Retry
Similarly, get the path of the XPath to play again
Requirement _3: Get matrix
Next, we need to convert the 4*4 block to a matrix, first to any number block.
It is easy to find that the first number is the value on the block, and then the number is: column lines, after the English string, then the block is a new build or a new merge. Using regular access
Image
Requirement _4: Analog arrow key
In selenium, the key value is sent to the element by means of the Send_keys () method
Note that the arrow keys are sent to the BODY element, not the div where the 4**4 block is located.
Step three: How to play the game
Method One: Random movement
Before the game is over, move around randomly, fractions or whatever.
Method Two: Each optimal
In the game before the end, each move, all choose the highest score direction, this is more complex (can see the source at the end of the text)
Fourth step: Run the program to see the results
1). Register with JS code
Borrowed a section from the Internet with JS for post submission code, successfully implemented the registration
2). Start playing the game
I've written an analytic function, the number of passes, the average score after the game is over.
The number of times I set to 3, executes the program, it will appear at the beginning.
Want to get the source of the students can private messages to me, private key words: source code, Source!
The latest GitHub programming language rankings are out, let's take a look at the latest news
Most popular languages: JS also first, Python overtook Java
GitHub Universe is the annual event of GitHub, this October 10-12th, the GitHub Universe conference in San Francisco. At the same time, GitHub also published the 2017 annual data Report--github Octoverse report on its website.
Every year, GitHub launches the "Octoverse" report, which lists some of the year's data, including the most popular programming languages, open source projects, and so on in their websites. This year's data is a bright one, so let's take a look.
Overall data:
24 million users
1.5 million organization
67 million Repo
1.3 Million student developer
Since September 2016, 1 billion commits
Since September 2016, 25.3 million active projects
Since September 2016, 12.5 million active Issue
Since September 2016, 6.7 million developers have been added
Since September 2016, a total of 451,000 new organizations have been added to GitHub
Since September 2016, 1.2 million people have submitted their first pull Request
Since September 2016, 4.1 million people have created their first Repo
191,000 people star or fork the project without committing the code
Since September 2016, 1.3 million new pull Request, including Linus Torvald's first GitHub pull Request:https://github.com/subsurface-divelog/subsurf ace/pull/155
Combined 100,000,000 pull Request
68,800,000 Issue Closed
Excluding frames and languages, the following tags are used most
Machine-learning
Game
Ios
Api
Blog
Website
Deep-learning
Library
Arduino
Plugin
Database
Bot
Then look at
Top 15 most popular languages on GitHub
As you can see, Python has taken a second leap from last year's third in Java, compared to last year it added 40% pull Request. More and more developers are feeling "life is too short"?
Java was squeezed down to third place, but Java 9 was released shortly, and its modular nature was very popular with developers, and the supremacy was hard to shake.
The number one is still JavaScript, and it's a few blocks away from other languages. Lenovo has been the hot development of the front-end technology in recent years, so there is no big surprise.
Top 15 languages (in chronological order): JavaScript, Python, Java, Ruby, PHP, C + +, CSS, C #, Go, C, TypeScript, Shell, Swift, Scala, objective-c
Top 10 items to be forked
Top 10 Contributors
Top 10 items in Review
Top 10 items in discuss
The above four leaderboards, TensorFlow in which three have left their own names, artificial intelligence technology is more and more attention, experienced by the "AI first" in the 2016, artificial intelligence in 2017 also ushered in a greater development
Article reproduced from: Rookie Learn Python, in addition, here to recommend a learning Exchange q-un,719-139-688, just hope that we can learn to communicate together, although not guarantee that everyone is satisfied, but I will do my best to help everyone's study.
I can't think! I can't think! I use Python to automatically play 2048 games