js實現黑白div塊畫空心的矩形、三角形、菱形、圓形
阿新 • • 發佈:2019-01-30
/* 列印實心矩形,思路:兩個for迴圈巢狀,外面for迴圈 + 換行符實現列印n行;
內部for迴圈實現列印n個星號; */
function juxing(n){ //列印矩形,傳入引數為行數(矩形高),作用域預解析時會宣告傳入引數,無需 var n = a; 宣告多餘的變數
for(var i=1; i<=n; i++){
for(var j=1; j<=n; j++){ //for迴圈巢狀實現,每行列印n個'*';
document.write('<div class="black"></div>');
}
document.write('<br/>'); //列印換行符,實現換行,不然全部在一行
}
}
juxing(4);
/* 列印空心矩形,
****
* *
* *
****
思路:內部for迴圈列印訊號時加上序號判斷,
具體情況:
1、第一行 或 最後一行的所有序號 列印星號
2、第二行至倒數第二行的第一個序號 或 最後一個序號 列印星號
3、第二行至倒數第二行中間全部序號 列印空格
' ' 注意HTML中字元實體都是以 &開頭 ;結尾 */
function kongxinjuxing(n){
for(var i=1; i<=n; i++){
for(var j=1; j<=n; j++){
if(i==1 || i==n){
document.write('<div class="black"></div>');
}else if(j==1 || j==n){
document.write('<div class="black"></div>' );
}else{
document.write('<div class="white"></div>');
}
}
document.write('<br/>');
}
}
kongxinjuxing(8);
/* 列印實心正三角形
..*
.***
*****
思路:兩個for迴圈巢狀;外部for迴圈實現n行;
內部第一個for迴圈,先列印n-i個空格
內部第二個for迴圈,再繼續列印2*i-1個星號
*/
function zhengsanjiaoxing(n){
for(var i=1; i<=n; i++){
for(var j=1; j<=n-i; j++){
document.write('<div class="white"></div>');
}
for(var k=1; k<=2*i-1; k++){
document.write('<div class="black"></div>');
}
document.write('<br/>');
}
}
zhengsanjiaoxing(4);
document.write('<br/>');
document.write('<br/>');
/*列印空心三角形
*
* *
* *
*******
思路:內部第二個for迴圈列印星號時判斷序號
具體情況:
1、最後一行每個序號都列印星號
2、第一行至倒數第二行中 第一個 或 最後一個 列印星號
3、其他列印空格
*/
function kongxinzhengsanjiaoxing(n){
for(var i=1; i<=n; i++){
for(var j=1; j<=n-i; j++){
document.write('<div class="white"></div>');
}
for(var k=1; k<=2*i-1; k++){
if(i==n){ //判斷如果是最後一行就每個序號都打星號
document.write('<div class="black"></div>');
}else if(k==1 || k==2*i-1){ //判斷如果是第一個 或 最後一個序號,列印星號
document.write('<div class="black"></div>');
}else{ //其他為序號列印空格
document.write('<div class="white"></div>');
}
}
document.write('<br/>');
}
}
kongxinzhengsanjiaoxing(9);
/*
列印實心菱形
思路:先列印上面 (n+1)/2 行的正三角形,再列印下面 (n+1)/2-1 行的倒過來的正三角形
*/
function lingxing(n){
for(var i=1; i<=(n+1)/2; i++){ //列印上半個三角形,行數為(n+1)/2
for(var j=1; j<=(n+1)/2-i; j++){
document.write('<div class="white"></div>');
}
for(var k=1; k<=2*i-1; k++){
document.write('<div class="black"></div>');
}
document.write('<br/>');
}
for(var l=1; l<=(n+1)/2-1; l++){ //列印下半個倒三角形,行數為(n+1)/2-1 要比上半個少一行
for(var m=1; m<=l; m++){
document.write('<div class="white"></div>');
}
//再繼續列印星號,每行是的星號個數是行數倒序的二倍減一,即(((n+1)/2-1+1)-l)*2-1
for(var o=1; o<=((n+1)/2-l)*2-1; o++){
document.write('<div class="black"></div>');
}
document.write('<br/>');
}
}
lingxing(9);
/*
列印空心菱形
*/
function kongxinlingxing(n){
for(var i=0; i<=(n+1)/2; i++){ //列印上部分三角形
for(var j=1; j<=(n+1)/2-i; j++){
document.write('<div class="white"></div>');
}
for(var k=1; k<=2*i-1; k++){
if(k==1 || k==2*i-1){
document.write('<div class="black"></div>'); //每行第一個序號 或 最後一個序號列印星號
}else{
document.write('<div class="white"></div>');
}
}
document.write('<br/>');
}
for(var l=1; l<=(n+1)/2-1; l++){ //列印下面的三角形
for(var m=1; m<=l; m++){
document.write('<div class="white"></div>');
}
for(var o=1; o<=((n+1)/2-l)*2-1; o++){
if(o==1 || o==((n+1)/2-l)*2-1){
document.write('<div class="black"></div>');
}else{
document.write('<div class="white"></div>');
}
}
document.write('<br/>');
}
}
kongxinlingxing(7);
/*
列印實心圓形
*/
function circle(r){
for(var i=1; i<=r; i++){ //畫上半個圓
var n = Math.round(Math.sqrt(r*r-(r-i)*(r-i)));
for(var j=1; j<=r-n; j++){
document.write('<div class="whitemin"></div>');
}
for(var k=1; k<=2*n; k++){
document.write('<div class="blackmin"></div>');
}
document.write('<br/>');
}
for(var l=1; l<=r; l++){
var m =Math.round(Math.sqrt(r*r-l*l));
for(var o=1; o<=r-m; o++){
document.write('<div class="whitemin"></div>');
}
for(var q=1; q<=2*m; q++){
document.write('<div class="blackmin"></div>');
}
document.write('<br/>');
}
}
circle(66);
/*
列印空心圓形
*/
function kongxinCircle(r){
for(var i=1; i<=r; i++){ //畫上半個圓
var w = Math.sqrt(r*r-(r-i)*(r-i));
var n = Math.round(w);
var diff = w - n;
if(diff >= 0.2){
n += 1;
}
console.log(w);
console.log(n);
for(var j=1; j<=r-n; j++){
document.write('<div class="whitemin"></div>');
}
for(var k=1; k<=2*n; k++){
if(i==1){
document.write('<div class="blackmin"></div>');
}else if(k==1 || k==2*n){
document.write('<div class="blackmin"></div>');
}else{
document.write('<div class="whitemin"></div>');
}
}
document.write('<br/>');
}
for(var l=1; l<=r; l++){
var m = Math.round(Math.sqrt(r*r-l*l));
for(var o=1; o<=r-m; o++){
document.write('<div class="whitemin"></div>');
}
for(var q=1; q<=2*m; q++){
if(l>=r-1){
document.write('<div class="blackmin"></div>');
}else if(q==1 || q==2*m){
document.write('<div class="blackmin"></div>');
}else{
document.write('<div class="whitemin"></div>');
}
}
document.write('<br/>');
}
}
kongxinCircle(66);